hanami_id-generators 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +5 -0
- data/lib/hanami_id-generators.rb +25 -0
- data/lib/hanami_id-generators/destroy/auth.rb +75 -0
- data/lib/hanami_id-generators/generate/auth.rb +208 -0
- data/lib/hanami_id-generators/templates/config.erb +10 -0
- data/lib/hanami_id-generators/templates/controllers/registrations/create.erb +20 -0
- data/lib/hanami_id-generators/templates/entity.erb +4 -0
- data/lib/hanami_id-generators/templates/interactors/registrations/create.erb +18 -0
- data/lib/hanami_id-generators/templates/migration.erb +29 -0
- data/lib/hanami_id-generators/templates/repository.erb +7 -0
- data/lib/hanami_id-generators/templates/routes.erb +6 -0
- data/lib/hanami_id-generators/version.rb +7 -0
- metadata +131 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: aff23030c604ab832dbe7647994f4176b974f9b6385a436677b918f4db22c301
|
|
4
|
+
data.tar.gz: e9378b3562c2db3b8eb94e27d937b8ae66e90d052e0a8180622bdffc7dc500c0
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: f4b4b4c06d5d855465c617948997f6db268ff04dc8e2753edb66c446cd39fcf08e1e0d99f33e3da562c818908f7593270d15b032bc10268450210a214bc3294d
|
|
7
|
+
data.tar.gz: 95ffefb906ae18061dce01ec12695898782195361a414af5162e6620b4284f31d774dbcfb5d46860726335e4669e8f71adc85a0465255986df7bd6ce1ce96d1d
|
data/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# rubocop:disable Naming/FileName
|
|
2
|
+
|
|
3
|
+
# frozen_string_literal: true
|
|
4
|
+
|
|
5
|
+
require "hanami_id"
|
|
6
|
+
# TODO: remove pry
|
|
7
|
+
# require "pry-byebug"
|
|
8
|
+
|
|
9
|
+
module HanamiId
|
|
10
|
+
module Generators
|
|
11
|
+
class << self
|
|
12
|
+
attr_accessor :root
|
|
13
|
+
attr_accessor :templates
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
@root = Pathname.new File.expand_path(File.dirname(__dir__))
|
|
17
|
+
@templates = @root.join "lib", "hanami_id-generators", "templates"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
require "hanami_id-generators/version"
|
|
22
|
+
require "hanami_id-generators/destroy/auth"
|
|
23
|
+
require "hanami_id-generators/generate/auth"
|
|
24
|
+
|
|
25
|
+
# rubocop:enable Naming/FileName
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "hanami/cli/commands"
|
|
4
|
+
|
|
5
|
+
module HanamiId
|
|
6
|
+
module Destroy
|
|
7
|
+
extend Hanami::CLI::Registry
|
|
8
|
+
|
|
9
|
+
class Auth < Hanami::CLI::Commands::Command
|
|
10
|
+
desc "Destroy an app with hanami_id"
|
|
11
|
+
|
|
12
|
+
option :app, default: "auth", desc: "Application name"
|
|
13
|
+
option :model, default: "user", desc: "User model name"
|
|
14
|
+
option :modules, type: :array, values: HanamiId::MODULES,
|
|
15
|
+
default: HanamiId.default_modules, desc: "List of modules"
|
|
16
|
+
option :mode, values: HanamiId::MODES, default: "standalone",
|
|
17
|
+
desc: "Level of itegration in project apps (callbacks, helpers etc.)"
|
|
18
|
+
|
|
19
|
+
example [
|
|
20
|
+
""
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
def call(app:, model:, mode:, **_options)
|
|
24
|
+
HanamiId.logger.info "Destroying #{app} app!"
|
|
25
|
+
HanamiId.model_name = model
|
|
26
|
+
Hanami::CLI::Commands::Destroy::App.new(
|
|
27
|
+
command_name: "destroy app"
|
|
28
|
+
).call(app: app)
|
|
29
|
+
|
|
30
|
+
remove_lib_app_directory(app)
|
|
31
|
+
remove_default_migration
|
|
32
|
+
return unless mode == "project"
|
|
33
|
+
|
|
34
|
+
# remove_config
|
|
35
|
+
remove_initializer
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def remove_lib_app_directory(app)
|
|
41
|
+
destination = project.root.join("lib", app)
|
|
42
|
+
return unless files.exist?(destination)
|
|
43
|
+
|
|
44
|
+
files.delete_directory destination
|
|
45
|
+
say(:remove, destination)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def remove_default_migration
|
|
49
|
+
migration_name = Hanami::Utils::Inflector.pluralize HanamiId.model_name
|
|
50
|
+
destination = Dir.glob(
|
|
51
|
+
project.root.join("db", "migrations", "*create_#{migration_name}.rb")
|
|
52
|
+
).first
|
|
53
|
+
return unless files.exist?(destination)
|
|
54
|
+
|
|
55
|
+
files.delete(destination)
|
|
56
|
+
say(:remove, destination)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def remove_config
|
|
60
|
+
# TODO: remove project-wide integration
|
|
61
|
+
raise "Not implemented"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def remove_initializer
|
|
65
|
+
destination = File.join project.initializers, "hanami_id.rb"
|
|
66
|
+
return unless files.exist?(destination)
|
|
67
|
+
|
|
68
|
+
files.delete destination
|
|
69
|
+
say(:remove, destination)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
Hanami::CLI::Commands.register "destroy auth", HanamiId::Destroy::Auth
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# rubocop:disable Metrics/ClassLength
|
|
2
|
+
|
|
3
|
+
# frozen_string_literal: true
|
|
4
|
+
|
|
5
|
+
require "hanami/cli/commands"
|
|
6
|
+
|
|
7
|
+
module HanamiId
|
|
8
|
+
module Generate
|
|
9
|
+
extend Hanami::CLI::Registry
|
|
10
|
+
|
|
11
|
+
class Auth < Hanami::CLI::Commands::Command
|
|
12
|
+
CONTROLLER_ACTIONS = {
|
|
13
|
+
"sessions" => {
|
|
14
|
+
"new" => "GET",
|
|
15
|
+
"create" => "POST",
|
|
16
|
+
"delete" => "DELETE"
|
|
17
|
+
},
|
|
18
|
+
"registrations" => {
|
|
19
|
+
"index" => "GET",
|
|
20
|
+
"new" => "GET",
|
|
21
|
+
"create" => "POST",
|
|
22
|
+
"edit" => "GET",
|
|
23
|
+
"show" => "GET",
|
|
24
|
+
"update" => "PUT",
|
|
25
|
+
"delete" => "DELETE"
|
|
26
|
+
}
|
|
27
|
+
}.freeze
|
|
28
|
+
|
|
29
|
+
desc "Generate app with hanami_id integration"
|
|
30
|
+
|
|
31
|
+
option :app, default: "auth", desc: "Application name"
|
|
32
|
+
option :model, default: "user", desc: "User model name"
|
|
33
|
+
option :modules, type: :array, values: HanamiId::MODULES,
|
|
34
|
+
default: HanamiId.default_modules, desc: "List of modules"
|
|
35
|
+
option :id_type, default: "integer", desc: "User model name"
|
|
36
|
+
option :login_column, default: "email", desc: "Login column in the DB"
|
|
37
|
+
option :password_column, default: "password_hash",
|
|
38
|
+
desc: "Password column in the DB"
|
|
39
|
+
option :mode, values: HanamiId::MODES, default: "standalone",
|
|
40
|
+
desc: "Level of itegration in project apps (callbacks, helpers etc.)"
|
|
41
|
+
|
|
42
|
+
example [
|
|
43
|
+
"--app auth --model account --modules registrations"
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
attr_accessor :auth_templates
|
|
47
|
+
attr_accessor :context
|
|
48
|
+
|
|
49
|
+
def initialize(*args)
|
|
50
|
+
super
|
|
51
|
+
@auth_templates = HanamiId::Generators.templates
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# rubocop:disable Metrics/AbcSize
|
|
55
|
+
def call(
|
|
56
|
+
app:, model:, modules:, login_column:, password_column:, id_type:,
|
|
57
|
+
mode:, **options
|
|
58
|
+
)
|
|
59
|
+
HanamiId.logger.info "Generating #{app} app!"
|
|
60
|
+
HanamiId.model_name = model
|
|
61
|
+
@context = Hanami::CLI::Commands::Context.new(
|
|
62
|
+
app: app,
|
|
63
|
+
model: HanamiId.model_name,
|
|
64
|
+
repository: HanamiId.repository_name,
|
|
65
|
+
modules: modules,
|
|
66
|
+
id_type: id_type,
|
|
67
|
+
login_column: login_column,
|
|
68
|
+
password_column: password_column,
|
|
69
|
+
options: options.merge(project: app)
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
generate_default_app
|
|
73
|
+
generate_default_entity
|
|
74
|
+
generate_default_repository
|
|
75
|
+
generate_default_migration
|
|
76
|
+
generate_default_actions(modules)
|
|
77
|
+
generate_default_routes
|
|
78
|
+
add_initializer(mode)
|
|
79
|
+
add_config if mode == "project"
|
|
80
|
+
inject_authentication_require
|
|
81
|
+
inject_warden_helper
|
|
82
|
+
end
|
|
83
|
+
# rubocop:enable Metrics/AbcSize
|
|
84
|
+
|
|
85
|
+
private
|
|
86
|
+
|
|
87
|
+
def generate_default_app
|
|
88
|
+
Hanami::CLI::Commands::Generate::App.new(
|
|
89
|
+
command_name: "generate app"
|
|
90
|
+
).call(app: context.app)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def generate_default_routes
|
|
94
|
+
source = auth_templates.join("routes.erb").to_s
|
|
95
|
+
destination = project.app_routes(context)
|
|
96
|
+
|
|
97
|
+
generate_file(source, destination, context)
|
|
98
|
+
say(:create, destination)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def generate_default_entity
|
|
102
|
+
source = auth_templates.join("entity.erb").to_s
|
|
103
|
+
destination = project.entity(context)
|
|
104
|
+
|
|
105
|
+
generate_file(source, destination, context)
|
|
106
|
+
say(:create, destination)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def generate_default_repository
|
|
110
|
+
source = auth_templates.join("repository.erb").to_s
|
|
111
|
+
destination = project.repository(context)
|
|
112
|
+
|
|
113
|
+
generate_file(source, destination, context)
|
|
114
|
+
say(:create, destination)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def generate_default_migration
|
|
118
|
+
source = auth_templates.join("migration.erb").to_s
|
|
119
|
+
migration_name = Hanami::Utils::Inflector.pluralize HanamiId.model_name
|
|
120
|
+
destination = project.migration(
|
|
121
|
+
context.with(migration: "create_#{migration_name}")
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
generate_file(source, destination, context)
|
|
125
|
+
say(:create, destination)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def generate_default_actions(modules)
|
|
129
|
+
CONTROLLER_ACTIONS.each do |controller_name, actions|
|
|
130
|
+
actions.each do |action, verb|
|
|
131
|
+
next unless modules.include? controller_name
|
|
132
|
+
|
|
133
|
+
generate_action(controller_name, action, verb)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def generate_action(controller_name, action, verb)
|
|
139
|
+
HanamiId.logger.info(
|
|
140
|
+
"Generating #{verb} #{controller_name}##{action}"
|
|
141
|
+
)
|
|
142
|
+
Hanami::CLI::Commands::Generate::Action.new(
|
|
143
|
+
command_name: "generate action"
|
|
144
|
+
).call(
|
|
145
|
+
app: context.app,
|
|
146
|
+
action: "#{controller_name}##{action}",
|
|
147
|
+
method: verb
|
|
148
|
+
)
|
|
149
|
+
# binding.pry
|
|
150
|
+
# action_code = generate_code(controller_name, action)
|
|
151
|
+
action_code = generate_code("registrations", "create")
|
|
152
|
+
destination = project.action(
|
|
153
|
+
context.with(
|
|
154
|
+
controller: controller_name,
|
|
155
|
+
action: action
|
|
156
|
+
)
|
|
157
|
+
)
|
|
158
|
+
files.inject_line_after(destination, /def call/, action_code)
|
|
159
|
+
say(:insert, destination)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def add_initializer(mode)
|
|
163
|
+
source = auth_templates.join("config.erb").to_s
|
|
164
|
+
destination = if mode == "project"
|
|
165
|
+
File.join project.initializers, "hanami_id.rb"
|
|
166
|
+
else
|
|
167
|
+
project.root.join(
|
|
168
|
+
"apps", context.app, "config", "hanami_id.rb"
|
|
169
|
+
)
|
|
170
|
+
end
|
|
171
|
+
generate_file(source, destination, context)
|
|
172
|
+
say(:create, destination)
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def add_config
|
|
176
|
+
# TODO: add project-wide integration
|
|
177
|
+
raise "Not implemented"
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def inject_authentication_require
|
|
181
|
+
content = "require \"hanami_id/authentication\""
|
|
182
|
+
destination = project.app_application(context)
|
|
183
|
+
|
|
184
|
+
files.inject_line_before(destination, "", content)
|
|
185
|
+
say(:insert, destination)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def inject_warden_helper
|
|
189
|
+
content = " include HanamiId::Warden::AppHelper"
|
|
190
|
+
destination = project.app_application(context)
|
|
191
|
+
|
|
192
|
+
files.inject_line_after_last(destination, /Application </, content)
|
|
193
|
+
say(:insert, destination)
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def generate_code(controller_name, action)
|
|
197
|
+
template = auth_templates.join(
|
|
198
|
+
"controllers", controller_name, "#{action}.erb"
|
|
199
|
+
)
|
|
200
|
+
render(template.to_s, context)
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
Hanami::CLI::Commands.register "generate auth", HanamiId::Generate::Auth
|
|
207
|
+
|
|
208
|
+
# rubocop:enable Metrics/ClassLength
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
HanamiId.configure do |config|
|
|
4
|
+
config.app_name = '<%= HanamiId.classify app %>'
|
|
5
|
+
config.model_name = '<%= model %>'
|
|
6
|
+
config.login_column = '<%= login_column %>'
|
|
7
|
+
config.password_column = '<%= password_column %>'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
<%= HanamiId.app_name %>::Action.include HanamiId::Authentication
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
def initialize(operation: Interactors::Registrations::Create.new)
|
|
2
|
+
@operation = operation
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
params do
|
|
6
|
+
required(:<%= HanamiId.model_name %>).schema do
|
|
7
|
+
required(:email) { filled? & str? & format?(URI::MailTo::EMAIL_REGEXP) }
|
|
8
|
+
required(:password) { filled? & str? & size?(6..64) }
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def call()
|
|
13
|
+
if params.valid?
|
|
14
|
+
<%= HanamiId.model_name %> = @operation.call(params[:<%= HanamiId.model_name %>])
|
|
15
|
+
params.env["warden"].set_user(<%= HanamiId.model_name %>)
|
|
16
|
+
redirect_to routes.root_path
|
|
17
|
+
else
|
|
18
|
+
self.status = 422
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'hanami/interactor'
|
|
2
|
+
|
|
3
|
+
module Interactors
|
|
4
|
+
module Registrations
|
|
5
|
+
class Create
|
|
6
|
+
include Hanami::Interactor
|
|
7
|
+
|
|
8
|
+
def initialize
|
|
9
|
+
# set up the object
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def call(book_attributes)
|
|
13
|
+
<%= model %> = <%= HanamiId.classify model %>.new(params[:login], params[:password])
|
|
14
|
+
<%= HanamiId.classify repository %>.create(<%= model %>)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
Hanami::Model.migration do
|
|
2
|
+
up do
|
|
3
|
+
<%- if id_type == 'uuid' -%>
|
|
4
|
+
execute 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp"'
|
|
5
|
+
|
|
6
|
+
<%- end -%>
|
|
7
|
+
create_table :<%= Hanami::Utils::Inflector.pluralize model %> do
|
|
8
|
+
<%- if id_type == 'uuid' -%>
|
|
9
|
+
primary_key :id, <%= id_type %>, null: false,
|
|
10
|
+
default: Hanami::Model::Sql.function(:uuid_generate_v4)
|
|
11
|
+
<%- else -%>
|
|
12
|
+
primary_key :id, null: false
|
|
13
|
+
<%- end -%>
|
|
14
|
+
|
|
15
|
+
column :<%= login_column %>, String, null: false
|
|
16
|
+
column :<%= password_column %>, String, null: false
|
|
17
|
+
|
|
18
|
+
column :created_at, DateTime, null: false
|
|
19
|
+
column :updated_at, DateTime, null: false
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
down do
|
|
24
|
+
drop_table :<%= Hanami::Utils::Inflector.pluralize model %>
|
|
25
|
+
<%- if id_type == 'uuid' -%>
|
|
26
|
+
execute 'DROP EXTENSION IF EXISTS "uuid-ossp"'
|
|
27
|
+
<%- end -%>
|
|
28
|
+
end
|
|
29
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: hanami_id-generators
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Viacheslav Ptsarev
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2019-05-29 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: hanami
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.3'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.3'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: bundler
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '2'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '2'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: pry-byebug
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0.12'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0.12'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rake
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '10.0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '10.0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rspec
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '3.0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '3.0'
|
|
83
|
+
description: |
|
|
84
|
+
Generates authentication app with all controller actions, views and
|
|
85
|
+
templates.
|
|
86
|
+
email:
|
|
87
|
+
- leemour@gmail.com
|
|
88
|
+
executables: []
|
|
89
|
+
extensions: []
|
|
90
|
+
extra_rdoc_files: []
|
|
91
|
+
files:
|
|
92
|
+
- README.md
|
|
93
|
+
- lib/hanami_id-generators.rb
|
|
94
|
+
- lib/hanami_id-generators/destroy/auth.rb
|
|
95
|
+
- lib/hanami_id-generators/generate/auth.rb
|
|
96
|
+
- lib/hanami_id-generators/templates/config.erb
|
|
97
|
+
- lib/hanami_id-generators/templates/controllers/registrations/create.erb
|
|
98
|
+
- lib/hanami_id-generators/templates/entity.erb
|
|
99
|
+
- lib/hanami_id-generators/templates/interactors/registrations/create.erb
|
|
100
|
+
- lib/hanami_id-generators/templates/migration.erb
|
|
101
|
+
- lib/hanami_id-generators/templates/repository.erb
|
|
102
|
+
- lib/hanami_id-generators/templates/routes.erb
|
|
103
|
+
- lib/hanami_id-generators/version.rb
|
|
104
|
+
homepage: https://github.com/leemour/hanami_id/gems/hanami_id-generators
|
|
105
|
+
licenses:
|
|
106
|
+
- MIT
|
|
107
|
+
metadata:
|
|
108
|
+
homepage_uri: https://github.com/leemour/hanami_id/gems/hanami_id-generators
|
|
109
|
+
source_code_uri: https://github.com/leemour/hanami_id/gems/hanami_id-generators
|
|
110
|
+
bug_tracker_uri: https://github.com/leemour/hanami_id/gems/hanami_id-generators/issues
|
|
111
|
+
changelog_uri: https://github.com/leemour/hanami_id/gems/hanami_id-generators/CHANGELOG.md
|
|
112
|
+
post_install_message:
|
|
113
|
+
rdoc_options: []
|
|
114
|
+
require_paths:
|
|
115
|
+
- lib
|
|
116
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
|
+
requirements:
|
|
118
|
+
- - "~>"
|
|
119
|
+
- !ruby/object:Gem::Version
|
|
120
|
+
version: '2.3'
|
|
121
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
|
+
requirements:
|
|
123
|
+
- - ">="
|
|
124
|
+
- !ruby/object:Gem::Version
|
|
125
|
+
version: '0'
|
|
126
|
+
requirements: []
|
|
127
|
+
rubygems_version: 3.0.3
|
|
128
|
+
signing_key:
|
|
129
|
+
specification_version: 4
|
|
130
|
+
summary: Generators for HanamiId
|
|
131
|
+
test_files: []
|