scaffold_plus 1.10.3 → 2.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 +4 -4
- data/Makefile +4 -4
- data/README.md +61 -51
- data/lib/generators/scaffold_plus/ancestry/ancestry_generator.rb +1 -1
- data/lib/generators/scaffold_plus/authority/authority_generator.rb +3 -0
- data/lib/generators/scaffold_plus/{enum/enum_generator.rb → enumerize/enumerize_generator.rb} +5 -5
- data/lib/generators/scaffold_plus/{enum → enumerize}/templates/enum_migration.rb +1 -1
- data/lib/generators/scaffold_plus/friendly_id/friendly_id_generator.rb +6 -0
- data/lib/generators/scaffold_plus/sorcery/sorcery_generator.rb +150 -0
- data/lib/generators/scaffold_plus/sorcery/templates/_form.html.erb +23 -0
- data/lib/generators/scaffold_plus/sorcery/templates/change.html.erb +15 -0
- data/lib/generators/scaffold_plus/sorcery/templates/edit.html.erb +5 -0
- data/lib/generators/scaffold_plus/sorcery/templates/index.html.erb +62 -0
- data/lib/generators/scaffold_plus/sorcery/templates/initializer.rb +114 -0
- data/lib/generators/scaffold_plus/sorcery/templates/log_in.html.erb +18 -0
- data/lib/generators/scaffold_plus/sorcery/templates/new.html.erb +5 -0
- data/lib/generators/scaffold_plus/sorcery/templates/password.html.erb +12 -0
- data/lib/generators/scaffold_plus/sorcery/templates/reset_password_email.html.erb +8 -0
- data/lib/generators/scaffold_plus/sorcery/templates/show.html.erb +87 -0
- data/lib/generators/scaffold_plus/sorcery/templates/sorcery.de.yml +62 -0
- data/lib/generators/scaffold_plus/sorcery/templates/sorcery.en.yml +62 -0
- data/lib/generators/scaffold_plus/sorcery/templates/user_mailer.rb +14 -0
- data/lib/generators/scaffold_plus/sorcery/templates/user_migration.rb +62 -0
- data/lib/generators/scaffold_plus/sorcery/templates/user_model.rb +18 -0
- data/lib/generators/scaffold_plus/sorcery/templates/users_controller.rb +156 -0
- data/lib/scaffold_plus/version.rb +1 -1
- data/scaffold_plus.gemspec +4 -4
- metadata +30 -14
- data/lib/generators/scaffold_plus/force_ssl/force_ssl_generator.rb +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7d2e202759f6157c5bca94e2616ea117b144a0a
|
4
|
+
data.tar.gz: c7594d18a5918aaa42d210770a61e251cac06205
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0590b2b7ae236631523e25e1dafc44a0472eb982929904891f532dc1976b98c9c345e18564e3acac04be72e8a5edaf142f233b3d3cfd089cc43e749ef0c9a87
|
7
|
+
data.tar.gz: f24bed53fcac42c60699a1ae75dc561039cdce7dbababb3c7e2d46842c374073f4fc3a510a4290e8f3ad44c5c40ebfb2bab2223c77b13bae64b2cd9d30b9f1eb
|
data/Makefile
CHANGED
@@ -9,15 +9,15 @@ all: build
|
|
9
9
|
rel: build
|
10
10
|
vim lib/scaffold_plus/version.rb
|
11
11
|
git commit -a
|
12
|
-
|
12
|
+
gem uninstall scaffold_plus --all
|
13
13
|
rake release
|
14
14
|
|
15
15
|
|
16
16
|
install: build
|
17
17
|
git commit -a
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
gem uninstall scaffold_plus --all
|
19
|
+
rake install
|
20
|
+
rm -rf pkg
|
21
21
|
|
22
22
|
build:
|
23
23
|
git add lib
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# ScaffoldPlus
|
2
2
|
|
3
|
-
A collection of
|
3
|
+
A collection of helpers for Rails scaffolding
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -18,72 +18,41 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
### Add migrations to change tables and columns
|
22
|
-
rails generate scaffold_plus:migration table --remove column [...]
|
23
|
-
rails generate scaffold_plus:migration table --rename old:new [...]
|
24
|
-
rails generate scaffold_plus:migration table --change column:type [...]
|
25
|
-
rails generate scaffold_plus:migration table --not_null column [...]
|
26
|
-
rails generate scaffold_plus:migration table --set_default column:value [...]
|
27
|
-
|
28
|
-
This helper creates migrations for some 'ALTER TABLE' statements.
|
29
|
-
|
30
|
-
### Add support for an enum field (requires Rails 4.1 and the enum_help Gem)
|
31
|
-
rails generate scaffold_plus:enum
|
32
|
-
|
33
|
-
This helper adds parent#has_many and child#belongs_to to the models
|
34
|
-
and updates the mass assignment whitelist in the controller.
|
35
|
-
It can also add a migration for the parent_id and a counter.
|
36
|
-
|
37
|
-
### Add regular one-to-many association (has_many / belongs_to)
|
38
|
-
rails generate scaffold_plus:has_many
|
39
|
-
|
40
|
-
This helper adds parent#has_many and child#belongs_to to the models
|
41
|
-
and updates the mass assignment whitelist in the controller.
|
42
|
-
It can also add a migration for the parent_id and a counter.
|
43
|
-
|
44
|
-
### Add regular one-to-one association (has_one / belongs_to)
|
45
|
-
rails generate scaffold_plus:has_one
|
46
|
-
|
47
|
-
This helper adds parent#has_one and child#belongs_to to the models
|
48
|
-
and updates the mass assignment whitelist in the controller.
|
49
|
-
It can also add a migration for the parent_id.
|
50
|
-
|
51
|
-
### Add a collection to a resource route
|
52
|
-
rails generate scaffold_plus:collection
|
53
|
-
|
54
|
-
This helper works on config/routes.rb and adds code for a collection
|
55
|
-
to a newly created resource route.
|
56
|
-
|
57
21
|
### Add ancestry to create a tree structure (or hierarchy)
|
58
22
|
rails generate scaffold_plus:ancestry
|
59
23
|
|
24
|
+
This helper depends on the [ancestry](https://github.com/stefankroes/ancestry) gem.
|
60
25
|
This helper adds has_ancestry to the model and updates the mass assignment
|
61
26
|
whitelist in the controller. It can also add a migration.
|
62
27
|
|
63
|
-
### Add
|
64
|
-
rails generate scaffold_plus:
|
65
|
-
|
66
|
-
This helper creates a join table and updates the two parent resources.
|
67
|
-
It can handle additional attributes in the join table incl. whitelisting
|
68
|
-
and accepts_nested_attributes_for in one of the parents.
|
28
|
+
### Add authority
|
29
|
+
rails generate scaffold_plus:authority
|
69
30
|
|
70
|
-
|
71
|
-
rails generate scaffold_plus:habtm
|
72
|
-
|
73
|
-
This helper scaffolds a has_and_belongs_to_many relationship with migration
|
74
|
-
and updates to the models.
|
31
|
+
TODO
|
75
32
|
|
76
33
|
### Set the autofocus flag on a column
|
77
34
|
rails generate scaffold_plus:autofocus
|
78
35
|
|
79
36
|
This helper adds "autofocus: true" to an input field in the form view.
|
80
37
|
|
38
|
+
### Add a collection to a resource route
|
39
|
+
rails generate scaffold_plus:collection
|
40
|
+
|
41
|
+
This helper works on config/routes.rb and adds code for a collection
|
42
|
+
to a newly created resource route. Also, empty views are generated.
|
43
|
+
|
44
|
+
### Add support for an enum field
|
45
|
+
rails generate scaffold_plus:enumerize
|
46
|
+
|
47
|
+
This helper depends on the [enumerize](https://github.com/brainspec/enumerize) gem.
|
48
|
+
A column of type string is added to the model and controller attribute whitelist.
|
49
|
+
|
81
50
|
### Add friendly_id to resource
|
82
51
|
rails generate friendly_id
|
83
|
-
rails generate scaffold_plus:friendly_id [attribute]
|
52
|
+
rails generate scaffold_plus:friendly_id resource [attribute = 'name']
|
84
53
|
|
85
|
-
This helper depends on the [friendly_id](https://github.com/norman/friendly_id
|
86
|
-
|
54
|
+
This helper depends on the [friendly_id](https://github.com/norman/friendly_id) gem.
|
55
|
+
It adds "extend FriendlyId" to the model and marks the attribute which is to
|
87
56
|
be slugged (default: 'name'). Currently it is hardcoded to add a 'slug' attribute.
|
88
57
|
|
89
58
|
### Add geo location to resource
|
@@ -110,6 +79,47 @@ This helper requires the [geodesic_wgs84](https://github.com/volkerwiegand/geode
|
|
110
79
|
gem. The purpose of this helper is to add a "to_ary" method to the model, which
|
111
80
|
makes it easy to use the resource in calulations like average distance and the like.
|
112
81
|
|
82
|
+
### Add many-to-many association with has_and_belongs_to_many
|
83
|
+
rails generate scaffold_plus:habtm
|
84
|
+
|
85
|
+
This helper scaffolds a has_and_belongs_to_many relationship with migration
|
86
|
+
and updates to the models.
|
87
|
+
|
88
|
+
### Add regular one-to-many association (has_many / belongs_to)
|
89
|
+
rails generate scaffold_plus:has_many
|
90
|
+
|
91
|
+
This helper adds parent#has_many and child#belongs_to to the models
|
92
|
+
and updates the mass assignment whitelist in the controller.
|
93
|
+
It can also add a migration for the parent_id and a counter.
|
94
|
+
|
95
|
+
### Add regular one-to-one association (has_one / belongs_to)
|
96
|
+
rails generate scaffold_plus:has_one
|
97
|
+
|
98
|
+
This helper adds parent#has_one and child#belongs_to to the models
|
99
|
+
and updates the mass assignment whitelist in the controller.
|
100
|
+
It can also add a migration for the parent_id.
|
101
|
+
|
102
|
+
### Add many-to-many association with intermediate join table
|
103
|
+
rails generate scaffold_plus:many_to_many
|
104
|
+
|
105
|
+
This helper creates a join table and updates the two parent resources.
|
106
|
+
It can handle additional attributes in the join table incl. whitelisting
|
107
|
+
and accepts_nested_attributes_for in one of the parents.
|
108
|
+
|
109
|
+
### Add migrations to change tables and columns
|
110
|
+
rails generate scaffold_plus:migration table --remove column [...]
|
111
|
+
rails generate scaffold_plus:migration table --rename old:new [...]
|
112
|
+
rails generate scaffold_plus:migration table --change column:type [...]
|
113
|
+
rails generate scaffold_plus:migration table --not_null column [...]
|
114
|
+
rails generate scaffold_plus:migration table --set_default column:value [...]
|
115
|
+
|
116
|
+
This helper creates migrations for some 'ALTER TABLE' statements.
|
117
|
+
|
118
|
+
### Add sorcery
|
119
|
+
rails generate scaffold_plus:sorcery
|
120
|
+
|
121
|
+
TODO
|
122
|
+
|
113
123
|
## Testing
|
114
124
|
|
115
125
|
Since I have no experience with test driven development (yet), this is
|
@@ -3,7 +3,7 @@ require 'rails/generators/active_record'
|
|
3
3
|
module ScaffoldPlus
|
4
4
|
module Generators
|
5
5
|
class AncestryGenerator < ActiveRecord::Generators::Base
|
6
|
-
desc "Add ancestry to create a tree structure (
|
6
|
+
desc "Add ancestry to create a tree structure (requires ancestry gem)"
|
7
7
|
argument :name, type: :string,
|
8
8
|
desc: "The object that has_ancestry"
|
9
9
|
class_option :depth, type: :boolean, default: false,
|
@@ -50,6 +50,9 @@ module ScaffoldPlus
|
|
50
50
|
inject_into_file file, after: /@#{name} = #{class_name}.find.*$/ do
|
51
51
|
"\n authorize_action_for(@#{name})"
|
52
52
|
end
|
53
|
+
inject_into_file file, after: /@#{name} = #{class_name}.friendly.find.*$/ do
|
54
|
+
"\n authorize_action_for(@#{name})"
|
55
|
+
end
|
53
56
|
end
|
54
57
|
end
|
55
58
|
end
|
data/lib/generators/scaffold_plus/{enum/enum_generator.rb → enumerize/enumerize_generator.rb}
RENAMED
@@ -2,14 +2,14 @@ require 'rails/generators/active_record'
|
|
2
2
|
|
3
3
|
module ScaffoldPlus
|
4
4
|
module Generators
|
5
|
-
class
|
6
|
-
desc "Add an enum field to a resource (requires
|
5
|
+
class EnumerizeGenerator < ActiveRecord::Generators::Base
|
6
|
+
desc "Add an enum field to a resource (requires enumerize gem)"
|
7
7
|
argument :name, type: :string,
|
8
8
|
desc: "The object that will have the enum field"
|
9
9
|
argument :column, type: :string,
|
10
10
|
desc: "The column to be used as enum field"
|
11
11
|
argument :values, type: :array, banner: "VALUE [...]",
|
12
|
-
desc: "Values (
|
12
|
+
desc: "Values (can be strings or symbols)"
|
13
13
|
class_option :migration, type: :boolean, default: false,
|
14
14
|
desc: 'Create a migration for added attributes'
|
15
15
|
class_option :index, type: :boolean, default: true,
|
@@ -29,9 +29,9 @@ module ScaffoldPlus
|
|
29
29
|
|
30
30
|
def update_model
|
31
31
|
inject_into_class "app/models/#{name}.rb", class_name do
|
32
|
-
list = values.map{|v| ":#{v}"}.join(', ')
|
33
32
|
text = options.before? ? "\n" : ""
|
34
|
-
text << "
|
33
|
+
text << " extend Enumerize\n"
|
34
|
+
text << " enumerize :#{column}, in: #{values}\n"
|
35
35
|
text << "\n" if options.after?
|
36
36
|
text
|
37
37
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class <%= migration_name.camelize %> < ActiveRecord::Migration
|
2
2
|
def change
|
3
|
-
add_column :<%= table_name %>, :<%= column %>, :
|
3
|
+
add_column :<%= table_name %>, :<%= column %>, :string
|
4
4
|
<%- if options.index? -%>
|
5
5
|
add_index :<%= table_name %>, :<%= column %>
|
6
6
|
<%- end -%>
|
@@ -37,6 +37,12 @@ module ScaffoldPlus
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
def update_controller
|
41
|
+
return if options.finders?
|
42
|
+
file = "app/controllers/#{table_name}_controller.rb"
|
43
|
+
gsub_file file, /(#{class_name})\.find/, "\\1.friendly.find"
|
44
|
+
end
|
45
|
+
|
40
46
|
protected
|
41
47
|
|
42
48
|
def migration_name
|
@@ -0,0 +1,150 @@
|
|
1
|
+
require 'rails/generators/active_record'
|
2
|
+
|
3
|
+
module ScaffoldPlus
|
4
|
+
module Generators
|
5
|
+
class SorceryGenerator < ActiveRecord::Generators::Base
|
6
|
+
desc "Install authentication (with Sorcery) and setup users."
|
7
|
+
argument :name, type: :string, default: "user",
|
8
|
+
banner: "name of the user model"
|
9
|
+
class_option :user_activation, type: :boolean, default: false,
|
10
|
+
desc: 'User activation by email with optional success email'
|
11
|
+
class_option :reset_password, type: :boolean, default: false,
|
12
|
+
desc: 'Reset password with email verification'
|
13
|
+
class_option :remember_me, type: :boolean, default: false,
|
14
|
+
desc: 'Remember me with configurable expiration'
|
15
|
+
class_option :session_timeout, type: :boolean, default: false,
|
16
|
+
desc: 'Configurable session timeout'
|
17
|
+
class_option :brute_force_protection, type: :boolean, default: false,
|
18
|
+
desc: 'Brute force login hammering protection'
|
19
|
+
class_option :http_basic_auth, type: :boolean, default: false,
|
20
|
+
desc: 'A before filter for requesting authentication with HTTP Basic'
|
21
|
+
class_option :activity_logging, type: :boolean, default: false,
|
22
|
+
desc: 'Automatic logging of last login, logout and activity'
|
23
|
+
class_option :external, type: :boolean, default: false,
|
24
|
+
desc: 'OAuth1 and OAuth2 support (Twitter, Facebook, etc.)'
|
25
|
+
class_option :layout, type: :string, default: 'centered',
|
26
|
+
desc: 'Layout to be used for rendering login.html.erb'
|
27
|
+
class_option :authority, type: :boolean, default: false,
|
28
|
+
desc: 'Include Authority::UserAbilities in user model'
|
29
|
+
source_root File.expand_path("../templates", __FILE__)
|
30
|
+
|
31
|
+
def add_migrations
|
32
|
+
migration_template "user_migration.rb", "db/migrate/create_#{table_name}.rb"
|
33
|
+
end
|
34
|
+
|
35
|
+
def add_models
|
36
|
+
template "user_model.rb", "app/models/#{name}.rb"
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_mailer
|
40
|
+
return unless options.reset_password?
|
41
|
+
template "user_mailer.rb", "app/mailers/#{mailer_name}.rb"
|
42
|
+
template "reset_password_email.html.erb", "app/views/#{mailer_name}/reset_password_email.html.erb"
|
43
|
+
end
|
44
|
+
|
45
|
+
def add_controllers
|
46
|
+
template "users_controller.rb", "app/controllers/#{table_name}_controller.rb"
|
47
|
+
end
|
48
|
+
|
49
|
+
def add_views
|
50
|
+
views = %w[edit _form index log_in new show]
|
51
|
+
views += %w[password change] if options.reset_password?
|
52
|
+
views.each do |view|
|
53
|
+
template "#{view}.html.erb", "app/views/#{table_name}/#{view}.html.erb"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def add_routes
|
58
|
+
lines = [
|
59
|
+
"resources :#{table_name} do",
|
60
|
+
" collection do",
|
61
|
+
" get 'log_in'",
|
62
|
+
" post 'access'",
|
63
|
+
" get 'log_out'"
|
64
|
+
]
|
65
|
+
lines << [
|
66
|
+
" get 'password'",
|
67
|
+
" post 'reset'"
|
68
|
+
] if options.reset_password?
|
69
|
+
lines << [
|
70
|
+
" end"
|
71
|
+
]
|
72
|
+
lines << [
|
73
|
+
" member do",
|
74
|
+
" get 'change'",
|
75
|
+
" patch 'refresh'",
|
76
|
+
" put 'refresh'",
|
77
|
+
" end"
|
78
|
+
] if options.reset_password?
|
79
|
+
lines << [
|
80
|
+
" end",
|
81
|
+
" get '/login' => '#{table_name}#log_in', as: :login, format: false",
|
82
|
+
" get '/logout' => '#{table_name}#log_out', as: :logout, format: false",
|
83
|
+
""
|
84
|
+
]
|
85
|
+
route lines.join("\n")
|
86
|
+
end
|
87
|
+
|
88
|
+
def add_initializer
|
89
|
+
template "initializer.rb", "config/initializers/sorcery.rb"
|
90
|
+
end
|
91
|
+
|
92
|
+
def add_locales
|
93
|
+
%w[en de].each do |locale|
|
94
|
+
template "sorcery.#{locale}.yml", "config/locales/sorcery.#{locale}.yml"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def update_application_controller
|
99
|
+
file = "app/controllers/application_controller.rb"
|
100
|
+
inject_into_class file, "ApplicationController", " before_action :require_login\n\n"
|
101
|
+
inject_into_file file, "\n\n private", after: /protect_from_forgery.*$/
|
102
|
+
lines = [
|
103
|
+
"",
|
104
|
+
" def not_authenticated",
|
105
|
+
" redirect_to login_path, alert: t('sorcery.required')",
|
106
|
+
" end",
|
107
|
+
"",
|
108
|
+
" def current_sysadm?",
|
109
|
+
" logged_in? and current_#{name}.sysadm",
|
110
|
+
" end",
|
111
|
+
" helper_method :current_sysadm?",
|
112
|
+
""
|
113
|
+
]
|
114
|
+
inject_into_file file, lines.join("\n"), before: /^end$/
|
115
|
+
end
|
116
|
+
|
117
|
+
protected
|
118
|
+
|
119
|
+
def submodules
|
120
|
+
modules = []
|
121
|
+
modules << ":user_activation" if options.user_activation?
|
122
|
+
modules << ":reset_password" if options.reset_password?
|
123
|
+
modules << ":remember_me" if options.remember_me?
|
124
|
+
modules << ":session_timeout" if options.session_timeout?
|
125
|
+
modules << ":brute_force_protection" if options.brute_force_protection?
|
126
|
+
modules << ":http_basic_auth" if options.http_basic_auth?
|
127
|
+
modules << ":activity_logging" if options.activity_logging?
|
128
|
+
modules << ":external" if options.external?
|
129
|
+
modules.join(', ')
|
130
|
+
end
|
131
|
+
|
132
|
+
def migration_name
|
133
|
+
"create_#{table_name}"
|
134
|
+
end
|
135
|
+
|
136
|
+
def mailer_name
|
137
|
+
"#{name}_mailer"
|
138
|
+
end
|
139
|
+
|
140
|
+
def controller_name
|
141
|
+
"#{table_name}_controller"
|
142
|
+
end
|
143
|
+
|
144
|
+
def whitelist
|
145
|
+
":email, :name, :phone, :comment, :theme, " +
|
146
|
+
":active, :sysadm, :password, :password_confirmation"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<%%= simple_form_for(@<%= name %>) do |f| %>
|
2
|
+
<%%= f.error_notification %>
|
3
|
+
|
4
|
+
<%%= f.input :email, autofocus: true %>
|
5
|
+
<%%= f.input :name %>
|
6
|
+
<%%= f.input :phone %>
|
7
|
+
<%%= f.input :comment %>
|
8
|
+
<%%= f.input :theme %>
|
9
|
+
<%%= f.input :active %>
|
10
|
+
<%%- if current_<%= name %>.sysadm and @<%= name %> != current_<%= name %> -%>
|
11
|
+
<%%= f.input :sysadm %>
|
12
|
+
<%%- end -%>
|
13
|
+
<%%= f.input :password %>
|
14
|
+
<%%= f.input :password_confirmation %>
|
15
|
+
|
16
|
+
<%%= f.button :submit, class: 'btn btn-primary' %>
|
17
|
+
<%%- if @<%= name %>.new_record? -%>
|
18
|
+
<%%= link_to t('actions.back.index'), <%= table_name %>_path, class: 'btn btn-default' %>
|
19
|
+
<%%- else -%>
|
20
|
+
<%%= link_to t('actions.back.show'), @<%= name %>, class: 'btn btn-default' %>
|
21
|
+
<%%= link_to t('actions.back.index'), <%= table_name %>_path, class: 'btn btn-default' %>
|
22
|
+
<%%- end -%>
|
23
|
+
<%% end %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%%- page_title t('sorcery.reset.choose') -%>
|
2
|
+
<h2><%%= t('sorcery.reset.choose') %></h2>
|
3
|
+
<%%- content_for(:help) { "<%= name %>_change" } -%>
|
4
|
+
|
5
|
+
<%%= simple_form_for(@<%= name %>, url: {action: "refresh"}) do |f| %>
|
6
|
+
<%%= f.error_notification %>
|
7
|
+
|
8
|
+
<%%= f.input :email, disabled: true, required: false %>
|
9
|
+
<%%= f.input :reset_password_token, as: :hidden %>
|
10
|
+
<%%= f.input :password, required: true, autofocus: true %>
|
11
|
+
<%%= f.input :password_confirmation, required: true %>
|
12
|
+
|
13
|
+
<%%= f.button :submit, t('sorcery.reset.change'), class: 'btn btn-primary' %>
|
14
|
+
<%%= link_to t('sorcery.reset.back'), log_in_<%= table_name %>_path, class: 'btn btn-default' %>
|
15
|
+
<%% end %>
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<%%- page_title t('headers.index', name: t('activerecord.models.<%= name %>.other')) -%>
|
2
|
+
<h2><%%= t('headers.index', name: t('activerecord.models.<%= name %>.other')) %></h2>
|
3
|
+
<%%- content_for(:help) { "<%= name %>_index" } -%>
|
4
|
+
|
5
|
+
<table class="table table-striped table-hover">
|
6
|
+
<thead>
|
7
|
+
<tr>
|
8
|
+
<th>
|
9
|
+
<%%= t('activerecord.attributes.<%= name %>.name') %>
|
10
|
+
</th>
|
11
|
+
<th>
|
12
|
+
<%%= t('activerecord.attributes.<%= name %>.phone') %>
|
13
|
+
</th>
|
14
|
+
<th>
|
15
|
+
<%%= t('activerecord.attributes.<%= name %>.comment') %>
|
16
|
+
</th>
|
17
|
+
<th>
|
18
|
+
<%%= t('activerecord.attributes.<%= name %>.active') %>
|
19
|
+
</th>
|
20
|
+
<th class="index-actions">
|
21
|
+
<%%= t('actions.title') %>
|
22
|
+
</th>
|
23
|
+
</tr>
|
24
|
+
</thead>
|
25
|
+
|
26
|
+
<tbody>
|
27
|
+
<%% @<%= table_name %>.each do |<%= name %>| %>
|
28
|
+
<tr>
|
29
|
+
<td>
|
30
|
+
<%%= mail_to(<%= name %>.email, <%= name %>.name) %>
|
31
|
+
</td>
|
32
|
+
<td>
|
33
|
+
<%%= <%= name %>.phone %>
|
34
|
+
</td>
|
35
|
+
<td>
|
36
|
+
<%%= <%= name %>.comment %>
|
37
|
+
</td>
|
38
|
+
<td>
|
39
|
+
<%%= <%= name %>.active ? t('simple_form.yes') : t('simple_form.no') %>
|
40
|
+
<%%- if <%= name %>.sysadm -%>
|
41
|
+
(<%%= t('activerecord.attributes.<%= name %>.sysadm') %>)
|
42
|
+
<%%- end -%>
|
43
|
+
</td>
|
44
|
+
<td class="index-actions">
|
45
|
+
<%%= link_to t('actions.show'), <%= name %>, class: 'btn btn-default btn-xs' %>
|
46
|
+
<%%- if current_<%= name %>.sysadm or <%= name %> == current_<%= name %> -%>
|
47
|
+
<br>
|
48
|
+
<%%= link_to t('actions.edit'), [:edit, <%= name %>], class: 'btn btn-default btn-xs' %>
|
49
|
+
<%%- end -%>
|
50
|
+
<%%- if current_<%= name %>.sysadm and <%= name %> != current_<%= name %> -%>
|
51
|
+
<br>
|
52
|
+
<%%= link_to t('actions.destroy'), <%= name %>, method: :delete, data: { confirm: t('actions.confirm') }, class: 'btn btn-danger btn-xs' %>
|
53
|
+
<%%- end -%>
|
54
|
+
</td>
|
55
|
+
</tr>
|
56
|
+
<%% end %>
|
57
|
+
</tbody>
|
58
|
+
</table>
|
59
|
+
|
60
|
+
<br>
|
61
|
+
|
62
|
+
<%%= link_to t('actions.add', name: t('activerecord.models.<%= name %>.one')), new_<%= name %>_path, class: 'btn btn-primary' %>
|
@@ -0,0 +1,114 @@
|
|
1
|
+
#
|
2
|
+
# This initializer was derived from the original Sorcery initializer
|
3
|
+
#
|
4
|
+
|
5
|
+
Rails.application.config.sorcery.submodules = [<%= submodules %>]
|
6
|
+
|
7
|
+
Rails.application.config.sorcery.configure do |config|
|
8
|
+
# -- core --
|
9
|
+
# config.not_authenticated_action = :not_authenticated
|
10
|
+
# config.save_return_to_url = true
|
11
|
+
# config.cookie_domain = nil
|
12
|
+
<%- if options.session_timeout? -%>
|
13
|
+
|
14
|
+
# -- session_timeout --
|
15
|
+
# config.session_timeout = 3600
|
16
|
+
# config.session_timeout_from_last_action = false
|
17
|
+
<%- end -%>
|
18
|
+
<%- if options.http_basic_auth? -%>
|
19
|
+
|
20
|
+
# -- http_basic_auth --
|
21
|
+
# config.controller_to_realm_map = { "application" => "Application" }
|
22
|
+
<%- end -%>
|
23
|
+
<%- if options.activity_logging? -%>
|
24
|
+
|
25
|
+
# -- activity_logging --
|
26
|
+
# config.register_login_time = true
|
27
|
+
# config.register_logout_time = true
|
28
|
+
# config.register_last_activity_time = true
|
29
|
+
<%- end -%>
|
30
|
+
<%- if options.external? -%>
|
31
|
+
|
32
|
+
# -- external --
|
33
|
+
# config.external_providers = []
|
34
|
+
# config.ca_file = 'path/to/ca_file'
|
35
|
+
<%- end -%>
|
36
|
+
|
37
|
+
# --- user config ---
|
38
|
+
config.user_config do |user|
|
39
|
+
# -- core --
|
40
|
+
# user.username_attribute_names = [:email]
|
41
|
+
# user.password_attribute_name = :password
|
42
|
+
# user.downcase_username_before_authenticating = false
|
43
|
+
# user.email_attribute_name = :email
|
44
|
+
# user.crypted_password_attribute_name = :crypted_password
|
45
|
+
# user.salt_join_token = ""
|
46
|
+
# user.salt_attribute_name = :salt
|
47
|
+
# user.stretches = nil
|
48
|
+
# user.encryption_key = nil
|
49
|
+
# user.custom_encryption_provider = nil
|
50
|
+
# user.encryption_algorithm = :bcrypt
|
51
|
+
# user.subclasses_inherit_config = false
|
52
|
+
<%- if options.user_activation? -%>
|
53
|
+
|
54
|
+
# -- user_activation --
|
55
|
+
# user.activation_state_attribute_name = :activation_state
|
56
|
+
# user.activation_token_attribute_name = :activation_token
|
57
|
+
# user.activation_token_expires_at_attribute_name = :activation_token_expires_at
|
58
|
+
# user.activation_token_expiration_period = nil
|
59
|
+
# user.user_activation_mailer = nil
|
60
|
+
# user.activation_mailer_disabled = false
|
61
|
+
# user.activation_needed_email_method_name = :activation_needed_email
|
62
|
+
# user.activation_success_email_method_name = :activation_success_email
|
63
|
+
# user.prevent_non_active_users_to_login = true
|
64
|
+
<%- end -%>
|
65
|
+
<%- if options.reset_password? -%>
|
66
|
+
|
67
|
+
# -- reset_password --
|
68
|
+
# user.reset_password_token_attribute_name = :reset_password_token
|
69
|
+
# user.reset_password_token_expires_at_attribute_name = :reset_password_token_expires_at
|
70
|
+
# user.reset_password_email_sent_at_attribute_name = :reset_password_email_sent_at
|
71
|
+
user.reset_password_mailer = <%= class_name %>Mailer
|
72
|
+
# user.reset_password_email_method_name = :reset_password_email
|
73
|
+
# user.reset_password_mailer_disabled = false
|
74
|
+
# user.reset_password_expiration_period = nil
|
75
|
+
# user.reset_password_time_between_emails = 300
|
76
|
+
<%- end -%>
|
77
|
+
<%- if options.remember_me? -%>
|
78
|
+
|
79
|
+
# -- remember_me --
|
80
|
+
# user.remember_me_httponly = true
|
81
|
+
# user.remember_me_for = 604800
|
82
|
+
<%- end -%>
|
83
|
+
<%- if options.brute_force_protection? -%>
|
84
|
+
|
85
|
+
# -- brute_force_protection --
|
86
|
+
# user.failed_logins_count_attribute_name = :failed_logins_count
|
87
|
+
# user.lock_expires_at_attribute_name = :lock_expires_at
|
88
|
+
# user.consecutive_login_retries_amount_limit = 50
|
89
|
+
# user.login_lock_time_period = 3600
|
90
|
+
# user.unlock_token_attribute_name = :unlock_token
|
91
|
+
# user.unlock_token_email_method_name = :send_unlock_token_email
|
92
|
+
# user.unlock_token_mailer_disabled = false
|
93
|
+
# user.unlock_token_mailer = nil
|
94
|
+
<%- end -%>
|
95
|
+
<%- if options.activity_logging? -%>
|
96
|
+
|
97
|
+
# -- activity_logging --
|
98
|
+
# user.last_login_at_attribute_name = :last_login_at
|
99
|
+
# user.last_logout_at_attribute_name = :last_logout_at
|
100
|
+
# user.last_activity_at_attribute_name = :last_activity_at
|
101
|
+
# user.activity_timeout = 600
|
102
|
+
<%- end -%>
|
103
|
+
<%- if options.external? -%>
|
104
|
+
|
105
|
+
# -- external --
|
106
|
+
# user.authentications_class = nil
|
107
|
+
# user.authentications_user_id_attribute_name = :user_id
|
108
|
+
# user.provider_attribute_name = :provider
|
109
|
+
# user.provider_uid_attribute_name = :uid
|
110
|
+
<%- end -%>
|
111
|
+
end
|
112
|
+
|
113
|
+
config.user_class = "<%= class_name %>"
|
114
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<%%- page_title t('sorcery.log_in') -%>
|
2
|
+
<h2><%%= t('sorcery.header', name: app_name) %></h2>
|
3
|
+
<%%- content_for(:help) { "<%= name %>_login" } -%>
|
4
|
+
|
5
|
+
<%%= simple_form_for(@<%= name %>, url: {action: "access"}) do |f| %>
|
6
|
+
<%%= f.error_notification %>
|
7
|
+
|
8
|
+
<%%= f.input :email, autofocus: true %>
|
9
|
+
<%%= f.input :password %>
|
10
|
+
<%- if options.remember_me? -%>
|
11
|
+
<%%= f.input :remember_me %>
|
12
|
+
<%- end -%>
|
13
|
+
|
14
|
+
<%%= f.button :submit, t('sorcery.submit'), class: 'btn btn-primary' %>
|
15
|
+
<%- if options.reset_password? -%>
|
16
|
+
<%%= link_to t('sorcery.reset.forgot'), password_<%= table_name %>_path, class: 'btn btn-default' %>
|
17
|
+
<%- end -%>
|
18
|
+
<%% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%%- page_title t('sorcery.reset.header') -%>
|
2
|
+
<h2><%%= t('sorcery.reset.header') %></h2>
|
3
|
+
<%%- content_for(:help) { "<%= name %>_password" } -%>
|
4
|
+
|
5
|
+
<%%= simple_form_for(@<%= name %>, url: {action: "reset"}) do |f| %>
|
6
|
+
<%%= f.error_notification %>
|
7
|
+
|
8
|
+
<%%= f.input :email, autofocus: true %>
|
9
|
+
|
10
|
+
<%%= f.button :submit, t('sorcery.reset.send'), class: 'btn btn-primary' %>
|
11
|
+
<%%= link_to t('sorcery.reset.back'), log_in_<%= table_name %>_path, class: 'btn btn-default' %>
|
12
|
+
<%% end %>
|