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
@@ -0,0 +1,87 @@
|
|
1
|
+
<%%- page_title @<%= name %>.name -%>
|
2
|
+
<h2><%%= @<%= name %>.name %></h2>
|
3
|
+
<%%- content_for(:help) { "<%= name %>_show" } -%>
|
4
|
+
|
5
|
+
<table class="table table-striped table-hover">
|
6
|
+
<tbody>
|
7
|
+
<tr>
|
8
|
+
<td><%%= t('activerecord.attributes.<%= name %>.email') %></td>
|
9
|
+
<td><%%= mail_to(@<%= name %>.email) %></td>
|
10
|
+
</tr>
|
11
|
+
<tr>
|
12
|
+
<td><%%= t('activerecord.attributes.<%= name %>.name') %></td>
|
13
|
+
<td><%%= @<%= name %>.name %></td>
|
14
|
+
</tr>
|
15
|
+
<tr>
|
16
|
+
<td><%%= t('activerecord.attributes.<%= name %>.phone') %></td>
|
17
|
+
<td><%%= @<%= name %>.phone %></td>
|
18
|
+
</tr>
|
19
|
+
<tr>
|
20
|
+
<td><%%= t('activerecord.attributes.<%= name %>.comment') %></td>
|
21
|
+
<td><%%= raw(@<%= name %>.comment) %></td>
|
22
|
+
</tr>
|
23
|
+
<tr>
|
24
|
+
<td><%%= t('activerecord.attributes.<%= name %>.theme') %></td>
|
25
|
+
<td><%%= @<%= name %>.theme %></td>
|
26
|
+
</tr>
|
27
|
+
<tr>
|
28
|
+
<td><%%= t('activerecord.attributes.<%= name %>.active') %></td>
|
29
|
+
<td><%%= @<%= name %>.active ? t('simple_form.yes') : t('simple_form.no') %></td>
|
30
|
+
</tr>
|
31
|
+
<tr>
|
32
|
+
<td><%%= t('activerecord.attributes.<%= name %>.sysadm') %></td>
|
33
|
+
<td><%%= @<%= name %>.sysadm ? t('simple_form.yes') : t('simple_form.no') %></td>
|
34
|
+
</tr>
|
35
|
+
<%- if options.activity_logging? -%>
|
36
|
+
<%%- if @<%= name %>.last_login_at.present? -%>
|
37
|
+
<tr>
|
38
|
+
<td><%%= t('activerecord.attributes.<%= name %>.last_login_at') %></td>
|
39
|
+
<td><%%= l(@<%= name %>.last_login_at) %></td>
|
40
|
+
</tr>
|
41
|
+
<tr>
|
42
|
+
<td><%%= t('activerecord.attributes.<%= name %>.last_login_from_ip_address') %></td>
|
43
|
+
<td><%%= @<%= name %>.last_login_from_ip_address %></td>
|
44
|
+
</tr>
|
45
|
+
<%%- end -%>
|
46
|
+
<%- end -%>
|
47
|
+
<%- if options.brute_force_protection? -%>
|
48
|
+
<tr>
|
49
|
+
<td><%%= t('activerecord.attributes.<%= name %>.failed_logins_count') %></td>
|
50
|
+
<td><%%= @<%= name %>.failed_logins_count %></td>
|
51
|
+
</tr>
|
52
|
+
<%- end -%>
|
53
|
+
<%- if options.activity_logging? -%>
|
54
|
+
<%%- if @<%= name %>.last_logout_at.present? -%>
|
55
|
+
<tr>
|
56
|
+
<td><%%= t('activerecord.attributes.<%= name %>.last_logout_at') %></td>
|
57
|
+
<td><%%= l(@<%= name %>.last_logout_at) %></td>
|
58
|
+
</tr>
|
59
|
+
<%%- end -%>
|
60
|
+
<%%- if @<%= name %>.last_activity_at.present? -%>
|
61
|
+
<tr>
|
62
|
+
<td><%%= t('activerecord.attributes.<%= name %>.last_activity_at') %></td>
|
63
|
+
<td><%%= l(@<%= name %>.last_activity_at) %></td>
|
64
|
+
</tr>
|
65
|
+
<%%- end -%>
|
66
|
+
<%- end -%>
|
67
|
+
<%- if options.brute_force_protection? -%>
|
68
|
+
<%%- if @<%= name %>.lock_expires_at.present? -%>
|
69
|
+
<tr>
|
70
|
+
<td><%%= t('activerecord.attributes.<%= name %>.lock_expires_at') %></td>
|
71
|
+
<td><%%= l(@<%= name %>.lock_expires_at) %></td>
|
72
|
+
</tr>
|
73
|
+
<%%- end -%>
|
74
|
+
<%- end -%>
|
75
|
+
</tbody>
|
76
|
+
</table>
|
77
|
+
|
78
|
+
<%%- if current_<%= name %>.sysadm or @<%= name %> == current_<%= name %> -%>
|
79
|
+
<%%= link_to t('actions.edit'), [:edit, @<%= name %>], class: 'btn btn-primary' %>
|
80
|
+
<%%= link_to t('actions.back.index'), <%= table_name %>_path, class: 'btn btn-default' %>
|
81
|
+
<%%- else -%>
|
82
|
+
<%%= link_to t('actions.back.index'), <%= table_name %>_path, class: 'btn btn-primary' %>
|
83
|
+
<%%- end -%>
|
84
|
+
<%%- if current_<%= name %>.sysadm and @<%= name %> != current_<%= name %> -%>
|
85
|
+
<%%= link_to t('actions.destroy'), @<%= name %>, method: :delete, data: { confirm: t('actions.confirm') }, class: 'btn btn-danger' %>
|
86
|
+
<%%- end -%>
|
87
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
de:
|
2
|
+
sorcery:
|
3
|
+
forbidden: "Diese Aktion ist nicht erlaubt."
|
4
|
+
log_in: "Login"
|
5
|
+
log_out: "Logout"
|
6
|
+
sign_up: "Benutzerkonto anlegen"
|
7
|
+
header: "%{name} Login"
|
8
|
+
submit: "Login"
|
9
|
+
<%- if options.reset_password? -%>
|
10
|
+
reset:
|
11
|
+
forgot: "Kennwort vergessen?"
|
12
|
+
header: "Kennwort anfordern"
|
13
|
+
send: "Anleitung senden"
|
14
|
+
back: "Zurück zum Login"
|
15
|
+
delivered: "Eine Anleitung wurde an die E-Mail Adresse gesendet."
|
16
|
+
missing: "Keine E-Mail Adresse angegeben."
|
17
|
+
choose: "Eingabe neues Kennwort"
|
18
|
+
change: "Kennwort ändern"
|
19
|
+
success: "Das Kennwort wurde aktualisiert."
|
20
|
+
failed: "Das Kennwort konnte nicht aktualisiert werden."
|
21
|
+
<%- end -%>
|
22
|
+
new_password: "Neues Kennwort"
|
23
|
+
failed: "E-Mail oder Kennwort ungültig"
|
24
|
+
success: "Willkommen und frohes Schaffen!"
|
25
|
+
goodbye: "Tschüss und bis bald."
|
26
|
+
required: "Bitte zuerst anmelden."
|
27
|
+
|
28
|
+
<%= name %>_mailer:
|
29
|
+
reset_password_email:
|
30
|
+
subject: "Kennwort für #{name} zurücksetzen"
|
31
|
+
|
32
|
+
activerecord:
|
33
|
+
models:
|
34
|
+
<%= name %>:
|
35
|
+
one: "Benutzer"
|
36
|
+
other: "Benutzer"
|
37
|
+
new: "Neuer Benutzer"
|
38
|
+
attributes:
|
39
|
+
<%= name %>:
|
40
|
+
email: "E-Mail"
|
41
|
+
name: "Name"
|
42
|
+
phone: "Telefon"
|
43
|
+
comment: "Bemerkung"
|
44
|
+
theme: "Oberfläche"
|
45
|
+
active: "Aktiv"
|
46
|
+
sysadm: "SysAdmin"
|
47
|
+
password: "Kennwort"
|
48
|
+
password_confirmation: "Kennwort wiederholen"
|
49
|
+
<%- if options.remember_me? -%>
|
50
|
+
remember_me: "Angemeldet bleiben"
|
51
|
+
<%- end -%>
|
52
|
+
<%- if options.activity_logging? -%>
|
53
|
+
last_login_at: "Letzte Anmeldung"
|
54
|
+
last_logout_at: "Letzte Abmeldung"
|
55
|
+
last_activity_at: "Letzte Aktivität"
|
56
|
+
last_login_from_ip_address: "Letzte IP-Adresse"
|
57
|
+
<%- end -%>
|
58
|
+
<%- if options.brute_force_protection? -%>
|
59
|
+
failed_logins_count: "Fehlversuche Anmeldung"
|
60
|
+
lock_expires_at: "Gesperrt bis"
|
61
|
+
<%- end -%>
|
62
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
en:
|
2
|
+
sorcery:
|
3
|
+
forbidden: "That is forbidden."
|
4
|
+
log_in: "Log in"
|
5
|
+
log_out: "Log out"
|
6
|
+
sign_up: "Sign up"
|
7
|
+
header: "%{name} Login"
|
8
|
+
submit: "Log in"
|
9
|
+
<%- if options.reset_password? -%>
|
10
|
+
reset:
|
11
|
+
forgot: "Forgot password?"
|
12
|
+
header: "Request new password"
|
13
|
+
send: "Send instructions"
|
14
|
+
back: "Back to log in"
|
15
|
+
delivered: "Instructions were sent to email address."
|
16
|
+
missing: "Missing email address."
|
17
|
+
choose: "Enter new password"
|
18
|
+
change: "Change password"
|
19
|
+
success: "Password has been changed."
|
20
|
+
failed: "Password could not be changed."
|
21
|
+
<%- end -%>
|
22
|
+
new_password: "Neues Kennwort"
|
23
|
+
failed: "E-Mail oder Kennwort ungültig"
|
24
|
+
success: "Willkommen und frohes Schaffen!"
|
25
|
+
goodbye: "Tschüss und bis bald."
|
26
|
+
required: "Please log in first."
|
27
|
+
|
28
|
+
<%= name %>_mailer:
|
29
|
+
reset_password_email:
|
30
|
+
subject: "Kennwort für #{name} zurücksetzen"
|
31
|
+
|
32
|
+
activerecord:
|
33
|
+
models:
|
34
|
+
<%= name %>:
|
35
|
+
one: "Benutzer"
|
36
|
+
other: "Benutzer"
|
37
|
+
new: "Neuer Benutzer"
|
38
|
+
attributes:
|
39
|
+
<%= name %>:
|
40
|
+
email: "E-Mail"
|
41
|
+
name: "Name"
|
42
|
+
phone: "Telefon"
|
43
|
+
comment: "Bemerkung"
|
44
|
+
theme: "Theme"
|
45
|
+
active: "Active"
|
46
|
+
sysadm: "SysAdmin"
|
47
|
+
password: "Password"
|
48
|
+
password_confirmation: "Repeat password"
|
49
|
+
<%- if options.remember_me? -%>
|
50
|
+
remember_me: "Remember me"
|
51
|
+
<%- end -%>
|
52
|
+
<%- if options.activity_logging? -%>
|
53
|
+
last_login_at: "Letzte Anmeldung"
|
54
|
+
last_logout_at: "Letzte Abmeldung"
|
55
|
+
last_activity_at: "Letzte Aktivität"
|
56
|
+
last_login_from_ip_address: "Letzte IP-Adresse"
|
57
|
+
<%- end -%>
|
58
|
+
<%- if options.brute_force_protection? -%>
|
59
|
+
failed_logins_count: "Fehlversuche Anmeldung"
|
60
|
+
lock_expires_at: "Gesperrt bis"
|
61
|
+
<%- end -%>
|
62
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class <%= mailer_name.camelize %> < ActionMailer::Base
|
2
|
+
default from: "from@example.com"
|
3
|
+
|
4
|
+
# Subject can be set in your I18n file at config/locales/en.yml
|
5
|
+
# with the following lookup:
|
6
|
+
#
|
7
|
+
# en.<%= name %>_mailer.reset_password_email.subject
|
8
|
+
#
|
9
|
+
def reset_password_email(<%= name %>)
|
10
|
+
@<%= name %> = <%= name %>
|
11
|
+
@url = change_<%= name %>_url(<%= name %>.reset_password_token)
|
12
|
+
mail to: <%= name %>.email
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
class <%= migration_name.camelize %> < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :<%= table_name %> do |t|
|
4
|
+
t.string :email, null: false
|
5
|
+
t.string :name
|
6
|
+
t.string :phone
|
7
|
+
t.text :comment
|
8
|
+
t.string :theme
|
9
|
+
t.boolean :active, default: true
|
10
|
+
t.boolean :sysadm, default: false
|
11
|
+
|
12
|
+
t.string :crypted_password, null: false
|
13
|
+
t.string :salt, null: false
|
14
|
+
<%- if options.user_activation? -%>
|
15
|
+
t.string :activation_state, default: nil
|
16
|
+
t.string :activation_token, default: nil
|
17
|
+
t.datetime :activation_token_expires_at, default: nil
|
18
|
+
<%- end -%>
|
19
|
+
<%- if options.reset_password? -%>
|
20
|
+
t.string :reset_password_token, default: nil
|
21
|
+
t.datetime :reset_password_token_expires_at, default: nil
|
22
|
+
t.datetime :reset_password_email_sent_at, default: nil
|
23
|
+
<%- end -%>
|
24
|
+
<%- if options.remember_me? -%>
|
25
|
+
t.boolean :remember_me
|
26
|
+
t.string :remember_me_token, default: nil
|
27
|
+
t.datetime :remember_me_token_expires_at, default: nil
|
28
|
+
<%- end -%>
|
29
|
+
<%- if options.brute_force_protection? -%>
|
30
|
+
t.integer :failed_logins_count, default: 0
|
31
|
+
t.datetime :lock_expires_at, default: nil
|
32
|
+
t.string :unlock_token, default: nil
|
33
|
+
<%- end -%>
|
34
|
+
<%- if options.activity_logging? -%>
|
35
|
+
t.datetime :last_login_at, default: nil
|
36
|
+
t.datetime :last_logout_at, default: nil
|
37
|
+
t.datetime :last_activity_at, default: nil
|
38
|
+
t.string :last_login_from_ip_address, default: nil
|
39
|
+
<%- end -%>
|
40
|
+
|
41
|
+
t.timestamps
|
42
|
+
end
|
43
|
+
|
44
|
+
add_index :<%= table_name %>, :email, unique: true
|
45
|
+
add_index :<%= table_name %>, :sysadm
|
46
|
+
<%- if options.user_activation? -%>
|
47
|
+
add_index :<%= table_name %>, :activation_token
|
48
|
+
<%- end -%>
|
49
|
+
<%- if options.reset_password? -%>
|
50
|
+
add_index :<%= table_name %>, :reset_password_token
|
51
|
+
<%- end -%>
|
52
|
+
<%- if options.remember_me? -%>
|
53
|
+
add_index :<%= table_name %>, :remember_me_token
|
54
|
+
<%- end -%>
|
55
|
+
<%- if options.brute_force_protection? -%>
|
56
|
+
add_index :<%= table_name %>, :unlock_token
|
57
|
+
<%- end -%>
|
58
|
+
<%- if options.activity_logging? -%>
|
59
|
+
add_index :<%= table_name %>, [:last_logout_at, :last_activity_at]
|
60
|
+
<%- end -%>
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class <%= class_name %> < ActiveRecord::Base
|
2
|
+
authenticates_with_sorcery!
|
3
|
+
validates :email, presence: true, uniqueness: { case_sensitive: false }
|
4
|
+
validates :password, presence: true, on: :create
|
5
|
+
validates :password, length: { minimum: 6 }, unless: Proc.new { |a| a.password.blank? }
|
6
|
+
validates :password, confirmation: true
|
7
|
+
validates :password_confirmation, presence: true, on: :create
|
8
|
+
<%- if options.authority? -%>
|
9
|
+
include Authority::UserAbilities
|
10
|
+
<%- end -%>
|
11
|
+
|
12
|
+
default_scope { order(:name) }
|
13
|
+
scope :active, -> { where(active: true) }
|
14
|
+
scope :sysadms, -> { where(sysadm: true) }
|
15
|
+
|
16
|
+
extend Enumerize
|
17
|
+
enumerize :theme, in: BootswatchRails::THEMES
|
18
|
+
end
|
@@ -0,0 +1,156 @@
|
|
1
|
+
class <%= controller_name.camelize %> < ApplicationController
|
2
|
+
skip_before_action :require_login, only: [:log_in, :access, :password, :reset, :change, :refresh, :log_out]
|
3
|
+
before_action :set_<%= name %>, only: [:show, :edit, :update, :destroy]
|
4
|
+
|
5
|
+
# GET /<%= table_name %>
|
6
|
+
# GET /<%= table_name %>.json
|
7
|
+
def index
|
8
|
+
@<%= table_name %> = <%= class_name %>.order(:email)
|
9
|
+
end
|
10
|
+
|
11
|
+
# GET /<%= table_name %>/1
|
12
|
+
# GET /<%= table_name %>/1.json
|
13
|
+
def show
|
14
|
+
end
|
15
|
+
|
16
|
+
# GET /<%= table_name %>/new
|
17
|
+
def new
|
18
|
+
@<%= name %> = <%= class_name %>.new
|
19
|
+
end
|
20
|
+
|
21
|
+
# POST /<%= table_name %>
|
22
|
+
# POST /<%= table_name %>.json
|
23
|
+
def create
|
24
|
+
@<%= name %> = <%= class_name %>.new(<%= name %>_params)
|
25
|
+
|
26
|
+
respond_to do |format|
|
27
|
+
if @<%= name %>.save
|
28
|
+
format.html { redirect_to @<%= name %>, notice: t('results.created', name: t('activerecord.models.<%= name %>.one')) }
|
29
|
+
format.json { render :show, status: :created, location: @<%= name %> }
|
30
|
+
else
|
31
|
+
format.html { render :new }
|
32
|
+
format.json { render json: @<%= name %>.errors, status: :unprocessable_entity }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# GET /<%= table_name %>/1/edit
|
38
|
+
def edit
|
39
|
+
end
|
40
|
+
|
41
|
+
# PATCH/PUT /<%= table_name %>/1
|
42
|
+
# PATCH/PUT /<%= table_name %>/1.json
|
43
|
+
def update
|
44
|
+
respond_to do |format|
|
45
|
+
if @<%= name %>.update(<%= name %>_params)
|
46
|
+
format.html { redirect_to @<%= name %>, notice: t('results.updated', name: t('activerecord.models.<%= name %>.one')) }
|
47
|
+
format.json { render :show, status: :ok, location: @<%= name %> }
|
48
|
+
else
|
49
|
+
format.html { render :edit }
|
50
|
+
format.json { render json: @<%= name %>.errors, status: :unprocessable_entity }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# GET /<%= table_name %>/log_in
|
56
|
+
def log_in
|
57
|
+
@<%= name %> = <%= class_name %>.new
|
58
|
+
render layout: '<%= options.layout %>'
|
59
|
+
end
|
60
|
+
|
61
|
+
# POST /<%= table_name %>/access
|
62
|
+
def access
|
63
|
+
@<%= name %> = <%= class_name %>.find_by email: params[:<%= name %>][:email]
|
64
|
+
if @<%= name %>.present? and @<%= name %>.active
|
65
|
+
<%- if options.remember_me? -%>
|
66
|
+
@<%= name %> = login(params[:<%= name %>][:email], params[:<%= name %>][:password], params[:<%= name %>][:remember_me])
|
67
|
+
<%- else -%>
|
68
|
+
@<%= name %> = login(params[:<%= name %>][:email], params[:<%= name %>][:password])
|
69
|
+
<%- end -%>
|
70
|
+
else
|
71
|
+
@<%= name %> = nil
|
72
|
+
end
|
73
|
+
if @<%= name %>.present?
|
74
|
+
redirect_back_or_to root_path, notice: t('sorcery.success')
|
75
|
+
else
|
76
|
+
redirect_to log_in_users_path, alert: t('sorcery.failed')
|
77
|
+
end
|
78
|
+
end
|
79
|
+
<%- if options.reset_password? -%>
|
80
|
+
|
81
|
+
# GET /<%= table_name %>/password
|
82
|
+
def password
|
83
|
+
@<%= name %> = <%= class_name %>.new
|
84
|
+
render layout: '<%= options.layout %>'
|
85
|
+
end
|
86
|
+
|
87
|
+
# POST /<%= table_name %>/reset
|
88
|
+
def reset
|
89
|
+
if params[:<%= name %>][:email].present?
|
90
|
+
@<%= name %> = <%= class_name %>.find_by email: params[:<%= name %>][:email]
|
91
|
+
@<%= name %>.deliver_reset_password_instructions! if @<%= name %>
|
92
|
+
redirect_to log_in_<%= table_name %>_path, notice: t('sorcery.reset.delivered')
|
93
|
+
else
|
94
|
+
redirect_to log_in_<%= table_name %>_path, alert: t('sorcery.reset.missing')
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# GET /<%= table_name %>/token/change
|
99
|
+
def change
|
100
|
+
@<%= name %> = <%= class_name %>.load_from_reset_password_token(params[:id])
|
101
|
+
@token = params[:id]
|
102
|
+
if @<%= name %>.blank?
|
103
|
+
not_authenticated
|
104
|
+
return
|
105
|
+
end
|
106
|
+
render layout: '<%= options.layout %>'
|
107
|
+
end
|
108
|
+
|
109
|
+
# PATCH/PUT /<%= table_name %>/token/refresh
|
110
|
+
def refresh
|
111
|
+
@token = params[:<%= name %>][:reset_password_token]
|
112
|
+
@<%= name %> = <%= class_name %>.load_from_reset_password_token(@token)
|
113
|
+
if @<%= name %>.blank?
|
114
|
+
not_authenticated
|
115
|
+
return
|
116
|
+
end
|
117
|
+
@<%= name %>.password_confirmation = params[:<%= name %>][:password_confirmation]
|
118
|
+
if @<%= name %>.change_password!(params[:<%= name %>][:password])
|
119
|
+
redirect_to root_path, notice: t('sorcery.reset.success')
|
120
|
+
else
|
121
|
+
redirect_to change_<%= name %>_path(@token), alert: t('sorcery.reset.failed')
|
122
|
+
end
|
123
|
+
end
|
124
|
+
<%- end -%>
|
125
|
+
|
126
|
+
# DELETE /<%= table_name %>/1
|
127
|
+
# DELETE /<%= table_name %>/1.json
|
128
|
+
def destroy
|
129
|
+
if @<%= name %> == current_<%= name %> or !current_<%= name %>.sysadm
|
130
|
+
redirect_to root_path, alert: t('sorcery.forbidden')
|
131
|
+
return
|
132
|
+
end
|
133
|
+
@<%= name %>.destroy
|
134
|
+
respond_to do |format|
|
135
|
+
format.html { redirect_to <%= table_name %>_url, notice: t('results.deleted', name: t('activerecord.models.<%= name %>.one')) }
|
136
|
+
format.json { head :no_content }
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
# GET /<%= table_name %>/log_out
|
141
|
+
def log_out
|
142
|
+
logout
|
143
|
+
redirect_to root_url, notice: t('sorcery.goodbye')
|
144
|
+
end
|
145
|
+
|
146
|
+
private
|
147
|
+
# Use callbacks to share common setup or constraints between actions.
|
148
|
+
def set_<%= name %>
|
149
|
+
@<%= name %> = <%= class_name %>.find(params[:id])
|
150
|
+
end
|
151
|
+
|
152
|
+
# Never trust parameters from the scary internet, only allow the white list through.
|
153
|
+
def <%= name %>_params
|
154
|
+
params.require(:<%= name %>).permit(<%= whitelist %>)
|
155
|
+
end
|
156
|
+
end
|
data/scaffold_plus.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = ScaffoldPlus::VERSION
|
9
9
|
spec.authors = ["Volker Wiegand"]
|
10
10
|
spec.email = ["volker.wiegand@cvw.de"]
|
11
|
-
spec.summary = "A collection of
|
11
|
+
spec.summary = "A collection of helpers for Rails scaffolding"
|
12
12
|
spec.description = spec.summary
|
13
13
|
spec.homepage = "https://github.com/volkerwiegand/scaffold_plus"
|
14
14
|
spec.license = "MIT"
|
@@ -19,9 +19,9 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.required_ruby_version = '>= 1.9.3'
|
22
|
-
spec.add_dependency 'activerecord', '
|
22
|
+
spec.add_dependency 'activerecord', '>= 4.0'
|
23
23
|
|
24
|
-
spec.add_development_dependency 'railties', '
|
24
|
+
spec.add_development_dependency 'railties', '>= 4.0'
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.6"
|
26
|
-
spec.add_development_dependency "rake", "
|
26
|
+
spec.add_development_dependency "rake", ">= 10.1"
|
27
27
|
end
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scaffold_plus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Volker Wiegand
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: railties
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '4.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '4.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -56,17 +56,17 @@ dependencies:
|
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '10.1'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10.1'
|
69
|
-
description: A collection of
|
69
|
+
description: A collection of helpers for Rails scaffolding
|
70
70
|
email:
|
71
71
|
- volker.wiegand@cvw.de
|
72
72
|
executables: []
|
@@ -86,9 +86,8 @@ files:
|
|
86
86
|
- lib/generators/scaffold_plus/autofocus/autofocus_generator.rb
|
87
87
|
- lib/generators/scaffold_plus/collection/collection_generator.rb
|
88
88
|
- lib/generators/scaffold_plus/collection/templates/view.html.erb
|
89
|
-
- lib/generators/scaffold_plus/
|
90
|
-
- lib/generators/scaffold_plus/
|
91
|
-
- lib/generators/scaffold_plus/force_ssl/force_ssl_generator.rb
|
89
|
+
- lib/generators/scaffold_plus/enumerize/enumerize_generator.rb
|
90
|
+
- lib/generators/scaffold_plus/enumerize/templates/enum_migration.rb
|
92
91
|
- lib/generators/scaffold_plus/friendly_id/friendly_id_generator.rb
|
93
92
|
- lib/generators/scaffold_plus/friendly_id/templates/friendly_id_migration.rb
|
94
93
|
- lib/generators/scaffold_plus/geocoder/geocoder_generator.rb
|
@@ -109,6 +108,23 @@ files:
|
|
109
108
|
- lib/generators/scaffold_plus/many_to_many/templates/many_to_many_model.rb
|
110
109
|
- lib/generators/scaffold_plus/migration/migration_generator.rb
|
111
110
|
- lib/generators/scaffold_plus/migration/templates/change_migration.rb
|
111
|
+
- lib/generators/scaffold_plus/sorcery/sorcery_generator.rb
|
112
|
+
- lib/generators/scaffold_plus/sorcery/templates/_form.html.erb
|
113
|
+
- lib/generators/scaffold_plus/sorcery/templates/change.html.erb
|
114
|
+
- lib/generators/scaffold_plus/sorcery/templates/edit.html.erb
|
115
|
+
- lib/generators/scaffold_plus/sorcery/templates/index.html.erb
|
116
|
+
- lib/generators/scaffold_plus/sorcery/templates/initializer.rb
|
117
|
+
- lib/generators/scaffold_plus/sorcery/templates/log_in.html.erb
|
118
|
+
- lib/generators/scaffold_plus/sorcery/templates/new.html.erb
|
119
|
+
- lib/generators/scaffold_plus/sorcery/templates/password.html.erb
|
120
|
+
- lib/generators/scaffold_plus/sorcery/templates/reset_password_email.html.erb
|
121
|
+
- lib/generators/scaffold_plus/sorcery/templates/show.html.erb
|
122
|
+
- lib/generators/scaffold_plus/sorcery/templates/sorcery.de.yml
|
123
|
+
- lib/generators/scaffold_plus/sorcery/templates/sorcery.en.yml
|
124
|
+
- lib/generators/scaffold_plus/sorcery/templates/user_mailer.rb
|
125
|
+
- lib/generators/scaffold_plus/sorcery/templates/user_migration.rb
|
126
|
+
- lib/generators/scaffold_plus/sorcery/templates/user_model.rb
|
127
|
+
- lib/generators/scaffold_plus/sorcery/templates/users_controller.rb
|
112
128
|
- lib/scaffold_plus.rb
|
113
129
|
- lib/scaffold_plus/version.rb
|
114
130
|
- scaffold_plus.gemspec
|
@@ -132,8 +148,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
148
|
version: '0'
|
133
149
|
requirements: []
|
134
150
|
rubyforge_project:
|
135
|
-
rubygems_version: 2.
|
151
|
+
rubygems_version: 2.6.6
|
136
152
|
signing_key:
|
137
153
|
specification_version: 4
|
138
|
-
summary: A collection of
|
154
|
+
summary: A collection of helpers for Rails scaffolding
|
139
155
|
test_files: []
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'rails/generators/active_record'
|
2
|
-
|
3
|
-
module ScaffoldPlus
|
4
|
-
module Generators
|
5
|
-
class ForceSslGenerator < ActiveRecord::Generators::Base
|
6
|
-
desc "Enforce SSL for this controller in production"
|
7
|
-
argument :name, type: :string,
|
8
|
-
desc: "The resource that is SSL protected"
|
9
|
-
class_option :only_for, type: :array,
|
10
|
-
desc: 'Enforce SSL for these actions'
|
11
|
-
class_option :except_for, type: :array,
|
12
|
-
desc: 'Do not enforce SSL for these actions'
|
13
|
-
|
14
|
-
def update_controller
|
15
|
-
file = "app/controllers/#{table_name}_controller.rb"
|
16
|
-
inject_into_file file, after: /^class.*ApplicationController$/ do
|
17
|
-
text = "\n force_ssl if: :ssl_configured?"
|
18
|
-
text << ", only: [#{only_list}]" if options.only_for.present?
|
19
|
-
text << ", except: [#{except_list}]" if options.except_for.present?
|
20
|
-
text
|
21
|
-
end
|
22
|
-
inject_into_file file, after: /private$/ do
|
23
|
-
[
|
24
|
-
"",
|
25
|
-
" # When to enforce SSL for this controller",
|
26
|
-
" def ssl_configured?",
|
27
|
-
" Rails.env.production?",
|
28
|
-
" end",
|
29
|
-
"",
|
30
|
-
""
|
31
|
-
].join("\n")
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
protected
|
36
|
-
|
37
|
-
def only_list
|
38
|
-
options.only_for.map { |o| ":#{o}" }.join(", ")
|
39
|
-
end
|
40
|
-
|
41
|
-
def except_list
|
42
|
-
options.except_for.map { |o| ":#{o}" }.join(", ")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|