bootswatch_rails 3.1.1.9 → 3.1.1.10
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/lib/bootswatch_rails/version.rb +1 -1
- data/lib/generators/bootswatch_rails/install/install_generator.rb +1 -1
- data/lib/generators/bootswatch_rails/install/templates/app/views/layouts/application.html.erb +3 -3
- data/lib/generators/bootswatch_rails/install/templates/app/views/layouts/centered.html.erb +2 -2
- data/lib/generators/bootswatch_rails/install/templates/lib/templates/erb/scaffold/show.html.erb +1 -1
- data/lib/generators/bootswatch_rails/sorcery/sorcery_generator.rb +164 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/_form.html.erb +19 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/change.html.erb +13 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/edit.html.erb +3 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/index.html.erb +37 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/initializer.rb +114 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/log_in.html.erb +16 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/new.html.erb +3 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/password.html.erb +10 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/reset_password_email.html.erb +8 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/show.html.erb +58 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/sorcery.de.yml +64 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/user_mailer.rb +14 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/user_migration.rb +60 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/user_model.rb +13 -0
- data/lib/generators/bootswatch_rails/sorcery/templates/users_controller.rb +151 -0
- data/vendor/assets/stylesheets/amelia.css +11 -2
- data/vendor/assets/stylesheets/cosmo.css +6 -3
- data/vendor/assets/stylesheets/cyborg.css +6 -3
- data/vendor/assets/stylesheets/lumen.css +9 -0
- data/vendor/assets/stylesheets/slate.css +12 -0
- data/vendor/assets/stylesheets/superhero.css +9 -0
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07d95e02e359636014ad1526bf7d9aefd0ec7793
|
4
|
+
data.tar.gz: 995facc0d2f1a13e3a75194ff4f1c4588ca0b205
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 438bb65b155e53dcc666949c3c014d6676ff260b36a74c264733ab2e6a34ca6ae0a8921459c6e59c7036b7e6d1e2bea4f7a4c98e6aaa7fb0210b634439f39783
|
7
|
+
data.tar.gz: e38e2cf9b143c50da825e8e958b14d375ec91aaa376d743f76d0036c853d2e59a1b528bffd594dea43606318b4cdd1c1774e0499383c241ca12d83a5114f1f23
|
@@ -29,7 +29,7 @@ module BootswatchRails
|
|
29
29
|
" helper_method :default_theme",
|
30
30
|
"",
|
31
31
|
" def current_theme",
|
32
|
-
" @current_theme = current_user.theme if
|
32
|
+
" @current_theme = current_user.theme if current_user.present?",
|
33
33
|
" @current_theme ||= default_theme",
|
34
34
|
" end",
|
35
35
|
" helper_method :current_theme",
|
data/lib/generators/bootswatch_rails/install/templates/app/views/layouts/application.html.erb
CHANGED
@@ -4,10 +4,10 @@
|
|
4
4
|
|
5
5
|
<body>
|
6
6
|
<%= render 'layouts/topnav' %>
|
7
|
-
|
7
|
+
|
8
8
|
<div class="container" id="main-content">
|
9
9
|
<div class="row">
|
10
|
-
<%- if
|
10
|
+
<%- if current_user.present? -%>
|
11
11
|
<div class="col-md-9">
|
12
12
|
<%= render 'layouts/flash' %>
|
13
13
|
<%= yield %>
|
@@ -23,7 +23,7 @@
|
|
23
23
|
<%- end -%>
|
24
24
|
</div>
|
25
25
|
</div>
|
26
|
-
|
26
|
+
|
27
27
|
<%= render 'layouts/footer' %>
|
28
28
|
</body>
|
29
29
|
</html>
|
data/lib/generators/bootswatch_rails/install/templates/lib/templates/erb/scaffold/show.html.erb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
<td>
|
11
11
|
<%- if attribute.name.include?("picture") -%>
|
12
12
|
<p>
|
13
|
-
<%%= link_to "Anzeigen in Originalgröße", '#' %>
|
13
|
+
<%%= link_to "TODO: Anzeigen in Originalgröße", '#' %>
|
14
14
|
</p>
|
15
15
|
<%%= image_tag(@<%= singular_table_name %>.<%= attribute.name %>_url(:display)) %>
|
16
16
|
<%- elsif attribute.type == :boolean -%>
|
@@ -0,0 +1,164 @@
|
|
1
|
+
require 'rails/generators/active_record'
|
2
|
+
|
3
|
+
module BootswatchRails
|
4
|
+
USER_STATUS = %w(guest member admin sysadm)
|
5
|
+
|
6
|
+
module Generators
|
7
|
+
class SorceryGenerator < ActiveRecord::Generators::Base
|
8
|
+
desc "Install model, views and controller for Sorcery."
|
9
|
+
argument :name, type: :string, default: "user",
|
10
|
+
banner: "user model (default 'user')"
|
11
|
+
class_option :user_activation, type: :boolean, default: false,
|
12
|
+
desc: 'User activation by email with optional success email'
|
13
|
+
class_option :reset_password, type: :boolean, default: false,
|
14
|
+
desc: 'Reset password with email verification'
|
15
|
+
class_option :remember_me, type: :boolean, default: false,
|
16
|
+
desc: 'Remember me with configurable expiration'
|
17
|
+
class_option :session_timeout, type: :boolean, default: false,
|
18
|
+
desc: 'Configurable session timeout'
|
19
|
+
class_option :brute_force_protection, type: :boolean, default: false,
|
20
|
+
desc: 'Brute force login hammering protection'
|
21
|
+
class_option :http_basic_auth, type: :boolean, default: false,
|
22
|
+
desc: 'A before filter for requesting authentication with HTTP Basic'
|
23
|
+
class_option :activity_logging, type: :boolean, default: false,
|
24
|
+
desc: 'Automatic logging of last login, logout and activity'
|
25
|
+
class_option :external, type: :boolean, default: false,
|
26
|
+
desc: 'OAuth1 and OAuth2 support (Twitter, Facebook, etc.)'
|
27
|
+
class_option :layout, type: :string, default: 'centered',
|
28
|
+
desc: 'Layout to be used for rendering login.html.erb'
|
29
|
+
source_root File.expand_path("../templates", __FILE__)
|
30
|
+
|
31
|
+
def add_migration
|
32
|
+
migration_template "user_migration.rb", "db/migrate/create_#{table_name}.rb"
|
33
|
+
end
|
34
|
+
|
35
|
+
def add_model
|
36
|
+
template "user_model.rb", "app/models/#{name}.rb"
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_mailer
|
40
|
+
return unless reset_password?
|
41
|
+
template "user_mailer.rb", "app/mailers/#{name}_mailer.rb"
|
42
|
+
template "reset_password_email.html.erb", "app/views/#{name}_mailer/reset_password_email.html.erb"
|
43
|
+
end
|
44
|
+
|
45
|
+
def add_controller
|
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 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 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 reset_password?
|
79
|
+
lines << [
|
80
|
+
" end",
|
81
|
+
""
|
82
|
+
]
|
83
|
+
route lines.join("\n")
|
84
|
+
end
|
85
|
+
|
86
|
+
def add_initializer
|
87
|
+
template "initializer.rb", "config/initializers/sorcery.rb"
|
88
|
+
end
|
89
|
+
|
90
|
+
def add_locales
|
91
|
+
%w[de].each do |locale|
|
92
|
+
template "sorcery.#{locale}.yml", "config/locales/sorcery.#{locale}.yml"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
protected
|
97
|
+
|
98
|
+
def user_activation?
|
99
|
+
options.user_activation?
|
100
|
+
end
|
101
|
+
|
102
|
+
def reset_password?
|
103
|
+
options.reset_password?
|
104
|
+
end
|
105
|
+
|
106
|
+
def remember_me?
|
107
|
+
options.remember_me?
|
108
|
+
end
|
109
|
+
|
110
|
+
def session_timeout?
|
111
|
+
options.session_timeout?
|
112
|
+
end
|
113
|
+
|
114
|
+
def brute_force_protection?
|
115
|
+
options.brute_force_protection?
|
116
|
+
end
|
117
|
+
|
118
|
+
def http_basic_auth?
|
119
|
+
options.http_basic_auth?
|
120
|
+
end
|
121
|
+
|
122
|
+
def activity_logging?
|
123
|
+
options.activity_logging?
|
124
|
+
end
|
125
|
+
|
126
|
+
def external?
|
127
|
+
options.external?
|
128
|
+
end
|
129
|
+
|
130
|
+
def submodules
|
131
|
+
modules = []
|
132
|
+
modules << ":user_activation" if user_activation?
|
133
|
+
modules << ":reset_password" if reset_password?
|
134
|
+
modules << ":remember_me" if remember_me?
|
135
|
+
modules << ":session_timeout" if session_timeout?
|
136
|
+
modules << ":brute_force_protection" if brute_force_protection?
|
137
|
+
modules << ":http_basic_auth" if http_basic_auth?
|
138
|
+
modules << ":activity_logging" if activity_logging?
|
139
|
+
modules << ":external" if external?
|
140
|
+
modules.join(', ')
|
141
|
+
end
|
142
|
+
|
143
|
+
def layout
|
144
|
+
options.layout
|
145
|
+
end
|
146
|
+
|
147
|
+
def migration_name
|
148
|
+
"create_#{table_name}"
|
149
|
+
end
|
150
|
+
|
151
|
+
def mailer_name
|
152
|
+
"#{name}_mailer"
|
153
|
+
end
|
154
|
+
|
155
|
+
def controller_name
|
156
|
+
"#{table_name}_controller"
|
157
|
+
end
|
158
|
+
|
159
|
+
def whitelist
|
160
|
+
":email, :name, :active, :status, :password, :password_confirmation, :theme"
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%%= simple_form_for(@<%= name %>) do |f| %>
|
2
|
+
<%%= f.error_notification %>
|
3
|
+
|
4
|
+
<%%= f.input :email %>
|
5
|
+
<%%= f.input :name %>
|
6
|
+
<%%= f.input :active %>
|
7
|
+
<%%= f.input :password %>
|
8
|
+
<%%= f.input :password_confirmation %>
|
9
|
+
<%%= f.input :status %>
|
10
|
+
<%%= f.input :theme %>
|
11
|
+
|
12
|
+
<%%= f.button :submit, class: 'btn btn-primary' %>
|
13
|
+
<%%- if @<%= name %>.new_record? -%>
|
14
|
+
<%%= link_to t('actions.back.index'), <%= table_name %>_path, class: 'btn btn-default' %>
|
15
|
+
<%%- else -%>
|
16
|
+
<%%= link_to t('actions.back.show'), @<%= name %>, class: 'btn btn-default' %>
|
17
|
+
<%%= link_to t('actions.back.index'), <%= table_name %>_path, class: 'btn btn-default' %>
|
18
|
+
<%%- end -%>
|
19
|
+
<%% end %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<h2><%%= t('sorcery.reset.choose') %></h2>
|
2
|
+
|
3
|
+
<%%= simple_form_for(@<%= name %>, url: {action: "refresh"}) do |f| %>
|
4
|
+
<%%= f.error_notification %>
|
5
|
+
|
6
|
+
<%%= f.input :email, disabled: true, required: false %>
|
7
|
+
<%%= f.input :reset_password_token, as: :hidden %>
|
8
|
+
<%%= f.input :password, required: true %>
|
9
|
+
<%%= f.input :password_confirmation, required: true %>
|
10
|
+
|
11
|
+
<%%= f.button :submit, t('sorcery.reset.change'), class: 'btn btn-primary' %>
|
12
|
+
<%%= link_to t('sorcery.reset.back'), log_in_<%= table_name %>_path, class: 'btn btn-default' %>
|
13
|
+
<%% end %>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<h2><%%= t('headers.index', name: t('activerecord.models.<%= name %>.other')) %></h2>
|
2
|
+
|
3
|
+
<table class="table table-striped table-hover">
|
4
|
+
<thead>
|
5
|
+
<tr>
|
6
|
+
<th><%%= t('activerecord.attributes.<%= name %>.email') %></th>
|
7
|
+
<th><%%= t('activerecord.attributes.<%= name %>.name') %></th>
|
8
|
+
<th><%%= t('activerecord.attributes.<%= name %>.active') %></th>
|
9
|
+
<th><%%= t('activerecord.attributes.<%= name %>.status') %></th>
|
10
|
+
<th><%%= t('activerecord.attributes.<%= name %>.theme') %></th>
|
11
|
+
<th class="index-actions"><%%= t('actions.title') %></th>
|
12
|
+
</tr>
|
13
|
+
</thead>
|
14
|
+
|
15
|
+
<tbody>
|
16
|
+
<%% @<%= table_name %>.each do |<%= name %>| %>
|
17
|
+
<tr>
|
18
|
+
<td><%%= <%= name %>.email %></td>
|
19
|
+
<td><%%= <%= name %>.name %></td>
|
20
|
+
<td><%%= <%= name %>.active ? t('simple_form.yes') : t('simple_form.no') %></td>
|
21
|
+
<td><%%= t('enums.<%= name %>.status.' + <%= name %>.status) %></td>
|
22
|
+
<td><%%= <%= name %>.theme %></td>
|
23
|
+
<td class="index-actions">
|
24
|
+
<%%= link_to t('actions.show'), <%= name %>, class: 'btn btn-default btn-xs' %>
|
25
|
+
<br>
|
26
|
+
<%%= link_to t('actions.edit'), [:edit, <%= name %>], class: 'btn btn-default btn-xs' %>
|
27
|
+
<br>
|
28
|
+
<%%= link_to t('actions.destroy'), <%= name %>, method: :delete, data: { confirm: t('actions.confirm') }, class: 'btn btn-danger btn-xs' %>
|
29
|
+
</td>
|
30
|
+
</tr>
|
31
|
+
<%% end %>
|
32
|
+
</tbody>
|
33
|
+
</table>
|
34
|
+
|
35
|
+
<br>
|
36
|
+
|
37
|
+
<%%= 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 session_timeout? -%>
|
13
|
+
|
14
|
+
# -- session_timeout --
|
15
|
+
# config.session_timeout = 3600
|
16
|
+
# config.session_timeout_from_last_action = false
|
17
|
+
<%- end -%>
|
18
|
+
<%- if http_basic_auth? -%>
|
19
|
+
|
20
|
+
# -- http_basic_auth --
|
21
|
+
# config.controller_to_realm_map = { "application" => "Application" }
|
22
|
+
<%- end -%>
|
23
|
+
<%- if 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 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 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 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 remember_me? -%>
|
78
|
+
|
79
|
+
# -- remember_me --
|
80
|
+
# user.remember_me_httponly = true
|
81
|
+
# user.remember_me_for = 604800
|
82
|
+
<%- end -%>
|
83
|
+
<%- if 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 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 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,16 @@
|
|
1
|
+
<h2><%%= t('sorcery.header') %></h2>
|
2
|
+
|
3
|
+
<%%= simple_form_for(@<%= name %>, url: {action: "access"}) do |f| %>
|
4
|
+
<%%= f.error_notification %>
|
5
|
+
|
6
|
+
<%%= f.input :email %>
|
7
|
+
<%%= f.input :password %>
|
8
|
+
<%- if remember_me? -%>
|
9
|
+
<%%= f.input :remember_me %>
|
10
|
+
<%- end -%>
|
11
|
+
|
12
|
+
<%%= f.button :submit, t('sorcery.submit'), class: 'btn btn-primary' %>
|
13
|
+
<%- if reset_password? -%>
|
14
|
+
<%%= link_to t('sorcery.reset.forgot'), password_<%= table_name %>_path, class: 'btn btn-default' %>
|
15
|
+
<%- end -%>
|
16
|
+
<%% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<h2><%%= t('sorcery.reset.header') %></h2>
|
2
|
+
|
3
|
+
<%%= simple_form_for(@<%= name %>, url: {action: "reset"}) do |f| %>
|
4
|
+
<%%= f.error_notification %>
|
5
|
+
|
6
|
+
<%%= f.input :email %>
|
7
|
+
|
8
|
+
<%%= f.button :submit, t('sorcery.reset.send'), class: 'btn btn-primary' %>
|
9
|
+
<%%= link_to t('sorcery.reset.back'), log_in_<%= table_name %>_path, class: 'btn btn-default' %>
|
10
|
+
<%% end %>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<h2><%%= t('headers.show', name: t('activerecord.models.<%= name %>.one')) %></h2>
|
2
|
+
|
3
|
+
<table class="table table-striped table-hover">
|
4
|
+
<tbody>
|
5
|
+
<tr>
|
6
|
+
<td><%%= t('activerecord.attributes.<%= name %>.email') %></td>
|
7
|
+
<td><%%= @<%= name %>.email %></td>
|
8
|
+
</tr>
|
9
|
+
<tr>
|
10
|
+
<td><%%= t('activerecord.attributes.<%= name %>.name') %></td>
|
11
|
+
<td><%%= @<%= name %>.name %></td>
|
12
|
+
</tr>
|
13
|
+
<tr>
|
14
|
+
<td><%%= t('activerecord.attributes.<%= name %>.active') %></td>
|
15
|
+
<td><%%= @<%= name %>.active ? t('simple_form.yes') : t('simple_form.no') %></td>
|
16
|
+
</tr>
|
17
|
+
<tr>
|
18
|
+
<td><%%= t('activerecord.attributes.<%= name %>.status') %></td>
|
19
|
+
<td><%%= t('enums.<%= name %>.status.' + @<%= name %>.status) %></td>
|
20
|
+
</tr>
|
21
|
+
<tr>
|
22
|
+
<td><%%= t('activerecord.attributes.<%= name %>.theme') %></td>
|
23
|
+
<td><%%= @<%= name %>.theme %></td>
|
24
|
+
</tr>
|
25
|
+
<%- if activity_logging? -%>
|
26
|
+
<tr>
|
27
|
+
<td><%%= t('activerecord.attributes.<%= name %>.last_login_at') %></td>
|
28
|
+
<td><%%= @<%= name %>.last_login_at %></td>
|
29
|
+
</tr>
|
30
|
+
<tr>
|
31
|
+
<td><%%= t('activerecord.attributes.<%= name %>.last_login_from_ip_address') %></td>
|
32
|
+
<td><%%= @<%= name %>.last_login_from_ip_address %></td>
|
33
|
+
</tr>
|
34
|
+
<tr>
|
35
|
+
<td><%%= t('activerecord.attributes.<%= name %>.last_logout_at') %></td>
|
36
|
+
<td><%%= @<%= name %>.last_logout_at %></td>
|
37
|
+
</tr>
|
38
|
+
<tr>
|
39
|
+
<td><%%= t('activerecord.attributes.<%= name %>.last_activity_at') %></td>
|
40
|
+
<td><%%= @<%= name %>.last_activity_at %></td>
|
41
|
+
</tr>
|
42
|
+
<%- end -%>
|
43
|
+
<%- if brute_force_protection? -%>
|
44
|
+
<tr>
|
45
|
+
<td><%%= t('activerecord.attributes.<%= name %>.failed_logins_count') %></td>
|
46
|
+
<td><%%= @<%= name %>.failed_logins_count %></td>
|
47
|
+
</tr>
|
48
|
+
<tr>
|
49
|
+
<td><%%= t('activerecord.attributes.<%= name %>.lock_expires_at') %></td>
|
50
|
+
<td><%%= @<%= name %>.lock_expires_at %></td>
|
51
|
+
</tr>
|
52
|
+
<%- end -%>
|
53
|
+
</tbody>
|
54
|
+
</table>
|
55
|
+
|
56
|
+
<%%= link_to t('actions.edit'), [:edit, @<%= name %>], class: 'btn btn-primary' %>
|
57
|
+
<%%= link_to t('actions.back.index'), <%= table_name %>_path, class: 'btn btn-default' %>
|
58
|
+
<%%= link_to t('actions.destroy'), @<%= name %>, method: :delete, data: { confirm: t('actions.confirm') }, class: 'btn btn-danger' %>
|
@@ -0,0 +1,64 @@
|
|
1
|
+
de:
|
2
|
+
sorcery:
|
3
|
+
log_in: "Login"
|
4
|
+
log_out: "Logout"
|
5
|
+
sign_up: "Benutzerkonto anlegen"
|
6
|
+
header: "Anmelden am System"
|
7
|
+
submit: "Login"
|
8
|
+
<%- if reset_password? -%>
|
9
|
+
reset:
|
10
|
+
forgot: "Kennwort vergessen?"
|
11
|
+
header: "Kennwort anfordern"
|
12
|
+
send: "Anleitung senden"
|
13
|
+
back: "Zurück zum Login"
|
14
|
+
delivered: "Eine Anleitung wurde an Ihre E-Mail Adresse gesendet."
|
15
|
+
missing: "Keine E-Mail Adresse angegeben."
|
16
|
+
choose: "Eingabe neues Kennwort"
|
17
|
+
change: "Kennwort ändern"
|
18
|
+
success: "Das Kennwort wurde aktualisiert."
|
19
|
+
failed: "Das Kennwort konnte nicht aktualisiert werden."
|
20
|
+
<%- end -%>
|
21
|
+
new_password: "Neues Kennwort"
|
22
|
+
failed: "E-Mail oder Kennwort ungültig"
|
23
|
+
success: "Willkommen und frohes Schaffen!"
|
24
|
+
goodbye: "Tschüss und bis bald."
|
25
|
+
|
26
|
+
<%= name %>_mailer:
|
27
|
+
reset_password_email:
|
28
|
+
subject: "Kennwort für #{name} zurücksetzen"
|
29
|
+
|
30
|
+
enums:
|
31
|
+
<%= name %>:
|
32
|
+
status:
|
33
|
+
guest: "Gast"
|
34
|
+
member: "Mitglied"
|
35
|
+
admin: "Admin"
|
36
|
+
sysadm: "System-Admin"
|
37
|
+
|
38
|
+
activerecord:
|
39
|
+
models:
|
40
|
+
<%= name %>:
|
41
|
+
one: "Benutzer"
|
42
|
+
other: "Benutzer"
|
43
|
+
attributes:
|
44
|
+
<%= name %>:
|
45
|
+
email: "E-Mail"
|
46
|
+
name: "Name"
|
47
|
+
active: "Aktiv"
|
48
|
+
status: "Status"
|
49
|
+
theme: "Oberfläche"
|
50
|
+
password: "Kennwort"
|
51
|
+
password_confirmation: "Kennwort wiederholen"
|
52
|
+
<%- if remember_me? -%>
|
53
|
+
remember_me: "Angemeldet bleiben"
|
54
|
+
<%- end -%>
|
55
|
+
<%- if activity_logging? -%>
|
56
|
+
last_login_at: "Letzte Anmeldung"
|
57
|
+
last_logout_at: "Letzte Abmeldung"
|
58
|
+
last_activity_at: "Letzte Aktivität"
|
59
|
+
last_login_from_ip_address: "Letzte IP-Adresse"
|
60
|
+
<%- end -%>
|
61
|
+
<%- if brute_force_protection? -%>
|
62
|
+
failed_logins_count: "Fehlversuche Anmeldung"
|
63
|
+
lock_expires_at: "Gesperrt bis"
|
64
|
+
<%- end -%>
|
@@ -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,60 @@
|
|
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.boolean :active, default: true
|
7
|
+
t.integer :status, default: 0
|
8
|
+
t.integer :theme, default: BootswatchRails::DEFAULT
|
9
|
+
|
10
|
+
t.string :crypted_password, null: false
|
11
|
+
t.string :salt, null: false
|
12
|
+
<%- if user_activation? -%>
|
13
|
+
t.string :activation_state, default: nil
|
14
|
+
t.string :activation_token, default: nil
|
15
|
+
t.datetime :activation_token_expires_at, default: nil
|
16
|
+
<%- end -%>
|
17
|
+
<%- if reset_password? -%>
|
18
|
+
t.string :reset_password_token, default: nil
|
19
|
+
t.datetime :reset_password_token_expires_at, default: nil
|
20
|
+
t.datetime :reset_password_email_sent_at, default: nil
|
21
|
+
<%- end -%>
|
22
|
+
<%- if remember_me? -%>
|
23
|
+
t.boolean :remember_me
|
24
|
+
t.string :remember_me_token, default: nil
|
25
|
+
t.datetime :remember_me_token_expires_at, default: nil
|
26
|
+
<%- end -%>
|
27
|
+
<%- if brute_force_protection? -%>
|
28
|
+
t.integer :failed_logins_count, default: 0
|
29
|
+
t.datetime :lock_expires_at, default: nil
|
30
|
+
t.string :unlock_token, default: nil
|
31
|
+
<%- end -%>
|
32
|
+
<%- if activity_logging? -%>
|
33
|
+
t.datetime :last_login_at, default: nil
|
34
|
+
t.datetime :last_logout_at, default: nil
|
35
|
+
t.datetime :last_activity_at, default: nil
|
36
|
+
t.string :last_login_from_ip_address, default: nil
|
37
|
+
<%- end -%>
|
38
|
+
|
39
|
+
t.timestamps
|
40
|
+
end
|
41
|
+
|
42
|
+
add_index :<%= table_name %>, :email, unique: true
|
43
|
+
add_index :<%= table_name %>, :status
|
44
|
+
<%- if user_activation? -%>
|
45
|
+
add_index :<%= table_name %>, :activation_token
|
46
|
+
<%- end -%>
|
47
|
+
<%- if reset_password? -%>
|
48
|
+
add_index :<%= table_name %>, :reset_password_token
|
49
|
+
<%- end -%>
|
50
|
+
<%- if remember_me? -%>
|
51
|
+
add_index :<%= table_name %>, :remember_me_token
|
52
|
+
<%- end -%>
|
53
|
+
<%- if brute_force_protection? -%>
|
54
|
+
add_index :<%= table_name %>, :unlock_token
|
55
|
+
<%- end -%>
|
56
|
+
<%- if activity_logging? -%>
|
57
|
+
add_index :<%= table_name %>, [:last_logout_at, :last_activity_at]
|
58
|
+
<%- end -%>
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class <%= class_name %> < ActiveRecord::Base
|
2
|
+
authenticates_with_sorcery!
|
3
|
+
validates :email, presence: true, uniqueness: true
|
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
|
+
|
9
|
+
enum status: <%= BootswatchRails::USER_STATUS %>
|
10
|
+
validates :status, presence: true
|
11
|
+
|
12
|
+
enum theme: BootswatchRails::THEMES
|
13
|
+
end
|
@@ -0,0 +1,151 @@
|
|
1
|
+
class <%= controller_name.camelize %> < ApplicationController
|
2
|
+
before_action :set_<%= name %>, only: [:show, :edit, :update, :destroy]
|
3
|
+
|
4
|
+
# GET /<%= table_name %>
|
5
|
+
# GET /<%= table_name %>.json
|
6
|
+
def index
|
7
|
+
@<%= table_name %> = <%= class_name %>.order(:email)
|
8
|
+
end
|
9
|
+
|
10
|
+
# GET /<%= table_name %>/1
|
11
|
+
# GET /<%= table_name %>/1.json
|
12
|
+
def show
|
13
|
+
end
|
14
|
+
|
15
|
+
# GET /<%= table_name %>/new
|
16
|
+
def new
|
17
|
+
@<%= name %> = <%= class_name %>.new
|
18
|
+
end
|
19
|
+
|
20
|
+
# POST /<%= table_name %>
|
21
|
+
# POST /<%= table_name %>.json
|
22
|
+
def create
|
23
|
+
@<%= name %> = <%= class_name %>.new(<%= name %>_params)
|
24
|
+
|
25
|
+
respond_to do |format|
|
26
|
+
if @<%= name %>.save
|
27
|
+
format.html { redirect_to @<%= name %>, notice: t('results.created', name: t('activerecord.models.<%= name %>.one')) }
|
28
|
+
format.json { render :show, status: :created, location: @<%= name %> }
|
29
|
+
else
|
30
|
+
format.html { render :new }
|
31
|
+
format.json { render json: @<%= name %>.errors, status: :unprocessable_entity }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# GET /<%= table_name %>/1/edit
|
37
|
+
def edit
|
38
|
+
end
|
39
|
+
|
40
|
+
# PATCH/PUT /<%= table_name %>/1
|
41
|
+
# PATCH/PUT /<%= table_name %>/1.json
|
42
|
+
def update
|
43
|
+
respond_to do |format|
|
44
|
+
if @<%= name %>.update(<%= name %>_params)
|
45
|
+
format.html { redirect_to @<%= name %>, notice: t('results.updated', name: t('activerecord.models.<%= name %>.one')) }
|
46
|
+
format.json { render :show, status: :ok, location: @<%= name %> }
|
47
|
+
else
|
48
|
+
format.html { render :edit }
|
49
|
+
format.json { render json: @<%= name %>.errors, status: :unprocessable_entity }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# GET /<%= table_name %>/log_in
|
55
|
+
def log_in
|
56
|
+
@<%= name %> = <%= class_name %>.new
|
57
|
+
render layout: '<%= layout %>'
|
58
|
+
end
|
59
|
+
|
60
|
+
# POST /<%= table_name %>/access
|
61
|
+
def access
|
62
|
+
@<%= name %> = <%= class_name %>.find_by email: params[:<%= name %>][:email]
|
63
|
+
if @<%= name %>.present? and @<%= name %>.active
|
64
|
+
<%- if remember_me? -%>
|
65
|
+
@<%= name %> = login(params[:<%= name %>][:email], params[:<%= name %>][:password], params[:<%= name %>][:remember_me])
|
66
|
+
<%- else -%>
|
67
|
+
@<%= name %> = login(params[:<%= name %>][:email], params[:<%= name %>][:password])
|
68
|
+
<%- end -%>
|
69
|
+
else
|
70
|
+
@<%= name %> = nil
|
71
|
+
end
|
72
|
+
if @<%= name %>.present?
|
73
|
+
redirect_back_or_to root_path, notice: t('sorcery.success')
|
74
|
+
else
|
75
|
+
redirect_to log_in_users_path, alert: t('sorcery.failed')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
<%- if reset_password? -%>
|
79
|
+
|
80
|
+
# GET /<%= table_name %>/password
|
81
|
+
def password
|
82
|
+
@<%= name %> = <%= class_name %>.new
|
83
|
+
render layout: '<%= layout %>'
|
84
|
+
end
|
85
|
+
|
86
|
+
# POST /<%= table_name %>/reset
|
87
|
+
def reset
|
88
|
+
if params[:<%= name %>][:email].present?
|
89
|
+
@<%= name %> = <%= class_name %>.find_by email: params[:<%= name %>][:email]
|
90
|
+
@<%= name %>.deliver_reset_password_instructions! if @<%= name %>
|
91
|
+
redirect_to log_in_<%= table_name %>_path, notice: t('sorcery.reset.delivered')
|
92
|
+
else
|
93
|
+
redirect_to log_in_<%= table_name %>_path, alert: t('sorcery.reset.missing')
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# GET /<%= table_name %>/token/change
|
98
|
+
def change
|
99
|
+
@<%= name %> = <%= class_name %>.load_from_reset_password_token(params[:id])
|
100
|
+
@token = params[:id]
|
101
|
+
if @<%= name %>.blank?
|
102
|
+
not_authenticated
|
103
|
+
return
|
104
|
+
end
|
105
|
+
render layout: '<%= layout %>'
|
106
|
+
end
|
107
|
+
|
108
|
+
# PATCH/PUT /<%= table_name %>/token/refresh
|
109
|
+
def refresh
|
110
|
+
@token = params[:<%= name %>][:reset_password_token]
|
111
|
+
@<%= name %> = <%= class_name %>.load_from_reset_password_token(@token)
|
112
|
+
if @<%= name %>.blank?
|
113
|
+
not_authenticated
|
114
|
+
return
|
115
|
+
end
|
116
|
+
@<%= name %>.password_confirmation = params[:<%= name %>][:password_confirmation]
|
117
|
+
if @<%= name %>.change_password!(params[:<%= name %>][:password])
|
118
|
+
redirect_to root_path, notice: t('sorcery.reset.success')
|
119
|
+
else
|
120
|
+
redirect_to change_<%= name %>_path(@token), alert: t('sorcery.reset.failed')
|
121
|
+
end
|
122
|
+
end
|
123
|
+
<%- end -%>
|
124
|
+
|
125
|
+
# DELETE /<%= table_name %>/1
|
126
|
+
# DELETE /<%= table_name %>/1.json
|
127
|
+
def destroy
|
128
|
+
@<%= name %>.destroy
|
129
|
+
respond_to do |format|
|
130
|
+
format.html { redirect_to <%= table_name %>_url, notice: t('results.deleted', name: t('activerecord.models.<%= name %>.one')) }
|
131
|
+
format.json { head :no_content }
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
# GET /<%= table_name %>/log_out
|
136
|
+
def log_out
|
137
|
+
logout
|
138
|
+
redirect_to root_url, notice: t('login.goodbye')
|
139
|
+
end
|
140
|
+
|
141
|
+
private
|
142
|
+
# Use callbacks to share common setup or constraints between actions.
|
143
|
+
def set_<%= name %>
|
144
|
+
@<%= name %> = <%= class_name %>.find(params[:id])
|
145
|
+
end
|
146
|
+
|
147
|
+
# Never trust parameters from the scary internet, only allow the white list through.
|
148
|
+
def <%= name %>_params
|
149
|
+
params.require(:<%= name %>).permit(<%= whitelist %>)
|
150
|
+
end
|
151
|
+
end
|
@@ -5836,6 +5836,9 @@ legend {
|
|
5836
5836
|
font-family: 'Lobster', cursive;
|
5837
5837
|
color: #fff;
|
5838
5838
|
}
|
5839
|
+
.input-group-addon {
|
5840
|
+
color: #444444;
|
5841
|
+
}
|
5839
5842
|
.has-warning .help-block,
|
5840
5843
|
.has-warning .control-label,
|
5841
5844
|
.has-warning .form-control-feedback {
|
@@ -5845,6 +5848,9 @@ legend {
|
|
5845
5848
|
.has-warning .form-control:focus {
|
5846
5849
|
border-color: #ecd77f;
|
5847
5850
|
}
|
5851
|
+
.has-warning .input-group-addon {
|
5852
|
+
border: none;
|
5853
|
+
}
|
5848
5854
|
.has-error .help-block,
|
5849
5855
|
.has-error .control-label,
|
5850
5856
|
.has-error .form-control-feedback {
|
@@ -5854,6 +5860,9 @@ legend {
|
|
5854
5860
|
.has-error .form-control:focus {
|
5855
5861
|
border-color: #f0a6ac;
|
5856
5862
|
}
|
5863
|
+
.has-error .input-group-addon {
|
5864
|
+
border: none;
|
5865
|
+
}
|
5857
5866
|
.has-success .help-block,
|
5858
5867
|
.has-success .control-label,
|
5859
5868
|
.has-success .form-control-feedback {
|
@@ -5863,8 +5872,8 @@ legend {
|
|
5863
5872
|
.has-success .form-control:focus {
|
5864
5873
|
border-color: #93e08b;
|
5865
5874
|
}
|
5866
|
-
.input-group-addon {
|
5867
|
-
|
5875
|
+
.has-success .input-group-addon {
|
5876
|
+
border: none;
|
5868
5877
|
}
|
5869
5878
|
.pagination a:hover {
|
5870
5879
|
color: #fff;
|
@@ -5838,7 +5838,8 @@ table .info a,
|
|
5838
5838
|
color: #ff7518;
|
5839
5839
|
}
|
5840
5840
|
.has-warning .form-control,
|
5841
|
-
.has-warning .form-control:focus
|
5841
|
+
.has-warning .form-control:focus,
|
5842
|
+
.has-warning .input-group-addon {
|
5842
5843
|
border: 1px solid #ff7518;
|
5843
5844
|
}
|
5844
5845
|
.has-error .help-block,
|
@@ -5847,7 +5848,8 @@ table .info a,
|
|
5847
5848
|
color: #ff0039;
|
5848
5849
|
}
|
5849
5850
|
.has-error .form-control,
|
5850
|
-
.has-error .form-control:focus
|
5851
|
+
.has-error .form-control:focus,
|
5852
|
+
.has-error .input-group-addon {
|
5851
5853
|
border: 1px solid #ff0039;
|
5852
5854
|
}
|
5853
5855
|
.has-success .help-block,
|
@@ -5856,7 +5858,8 @@ table .info a,
|
|
5856
5858
|
color: #3fb618;
|
5857
5859
|
}
|
5858
5860
|
.has-success .form-control,
|
5859
|
-
.has-success .form-control:focus
|
5861
|
+
.has-success .form-control:focus,
|
5862
|
+
.has-success .input-group-addon {
|
5860
5863
|
border: 1px solid #3fb618;
|
5861
5864
|
}
|
5862
5865
|
.nav-pills > li > a {
|
@@ -5825,7 +5825,8 @@ table .text-muted,
|
|
5825
5825
|
color: #ff8800;
|
5826
5826
|
}
|
5827
5827
|
.has-warning .form-control,
|
5828
|
-
.has-warning .form-control:focus
|
5828
|
+
.has-warning .form-control:focus,
|
5829
|
+
.has-warning .input-group-addon {
|
5829
5830
|
border-color: #ff8800;
|
5830
5831
|
}
|
5831
5832
|
.has-error .help-block,
|
@@ -5834,7 +5835,8 @@ table .text-muted,
|
|
5834
5835
|
color: #cc0000;
|
5835
5836
|
}
|
5836
5837
|
.has-error .form-control,
|
5837
|
-
.has-error .form-control:focus
|
5838
|
+
.has-error .form-control:focus,
|
5839
|
+
.has-error .input-group-addon {
|
5838
5840
|
border-color: #cc0000;
|
5839
5841
|
}
|
5840
5842
|
.has-success .help-block,
|
@@ -5843,7 +5845,8 @@ table .text-muted,
|
|
5843
5845
|
color: #77b300;
|
5844
5846
|
}
|
5845
5847
|
.has-success .form-control,
|
5846
|
-
.has-success .form-control:focus
|
5848
|
+
.has-success .form-control:focus,
|
5849
|
+
.has-success .input-group-addon {
|
5847
5850
|
border-color: #77b300;
|
5848
5851
|
}
|
5849
5852
|
legend {
|
@@ -5947,6 +5947,9 @@ label {
|
|
5947
5947
|
-webkit-box-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.075);
|
5948
5948
|
box-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.075);
|
5949
5949
|
}
|
5950
|
+
.has-warning .input-group-addon {
|
5951
|
+
border: 1px solid #ff851b;
|
5952
|
+
}
|
5950
5953
|
.has-error .help-block,
|
5951
5954
|
.has-error .control-label,
|
5952
5955
|
.has-error .form-control-feedback {
|
@@ -5958,6 +5961,9 @@ label {
|
|
5958
5961
|
-webkit-box-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.075);
|
5959
5962
|
box-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.075);
|
5960
5963
|
}
|
5964
|
+
.has-error .input-group-addon {
|
5965
|
+
border: 1px solid #ff4136;
|
5966
|
+
}
|
5961
5967
|
.has-success .help-block,
|
5962
5968
|
.has-success .control-label,
|
5963
5969
|
.has-success .form-control-feedback {
|
@@ -5969,6 +5975,9 @@ label {
|
|
5969
5975
|
-webkit-box-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.075);
|
5970
5976
|
box-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.075);
|
5971
5977
|
}
|
5978
|
+
.has-success .input-group-addon {
|
5979
|
+
border: 1px solid #28b62c;
|
5980
|
+
}
|
5972
5981
|
.nav .open > a,
|
5973
5982
|
.nav .open > a:hover,
|
5974
5983
|
.nav .open > a:focus {
|
@@ -5974,6 +5974,10 @@ textarea {
|
|
5974
5974
|
.has-warning .form-control:focus {
|
5975
5975
|
border-color: #f89406;
|
5976
5976
|
}
|
5977
|
+
.has-warning .input-group-addon {
|
5978
|
+
background-color: #272b30;
|
5979
|
+
border: none;
|
5980
|
+
}
|
5977
5981
|
.has-error .help-block,
|
5978
5982
|
.has-error .control-label,
|
5979
5983
|
.has-error .form-control-feedback {
|
@@ -5983,6 +5987,10 @@ textarea {
|
|
5983
5987
|
.has-error .form-control:focus {
|
5984
5988
|
border-color: #ee5f5b;
|
5985
5989
|
}
|
5990
|
+
.has-error .input-group-addon {
|
5991
|
+
background-color: #272b30;
|
5992
|
+
border: none;
|
5993
|
+
}
|
5986
5994
|
.has-success .help-block,
|
5987
5995
|
.has-success .control-label,
|
5988
5996
|
.has-success .form-control-feedback {
|
@@ -5992,6 +6000,10 @@ textarea {
|
|
5992
6000
|
.has-success .form-control:focus {
|
5993
6001
|
border-color: #62c462;
|
5994
6002
|
}
|
6003
|
+
.has-success .input-group-addon {
|
6004
|
+
background-color: #272b30;
|
6005
|
+
border: none;
|
6006
|
+
}
|
5995
6007
|
legend {
|
5996
6008
|
color: #fff;
|
5997
6009
|
}
|
@@ -5887,16 +5887,25 @@ label,
|
|
5887
5887
|
.has-warning .form-control-feedback {
|
5888
5888
|
color: #f0ad4e;
|
5889
5889
|
}
|
5890
|
+
.has-warning .input-group-addon {
|
5891
|
+
border: none;
|
5892
|
+
}
|
5890
5893
|
.has-error .help-block,
|
5891
5894
|
.has-error .control-label,
|
5892
5895
|
.has-error .form-control-feedback {
|
5893
5896
|
color: #d9534f;
|
5894
5897
|
}
|
5898
|
+
.has-error .input-group-addon {
|
5899
|
+
border: none;
|
5900
|
+
}
|
5895
5901
|
.has-success .help-block,
|
5896
5902
|
.has-success .control-label,
|
5897
5903
|
.has-success .form-control-feedback {
|
5898
5904
|
color: #5cb85c;
|
5899
5905
|
}
|
5906
|
+
.has-success .input-group-addon {
|
5907
|
+
border: none;
|
5908
|
+
}
|
5900
5909
|
.form-control:focus {
|
5901
5910
|
-webkit-box-shadow: none;
|
5902
5911
|
box-shadow: none;
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootswatch_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.1.
|
4
|
+
version: 3.1.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Volker Wiegand
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -105,6 +105,22 @@ files:
|
|
105
105
|
- lib/generators/bootswatch_rails/install/templates/lib/templates/erb/scaffold/index.html.erb
|
106
106
|
- lib/generators/bootswatch_rails/install/templates/lib/templates/erb/scaffold/new.html.erb
|
107
107
|
- lib/generators/bootswatch_rails/install/templates/lib/templates/erb/scaffold/show.html.erb
|
108
|
+
- lib/generators/bootswatch_rails/sorcery/sorcery_generator.rb
|
109
|
+
- lib/generators/bootswatch_rails/sorcery/templates/_form.html.erb
|
110
|
+
- lib/generators/bootswatch_rails/sorcery/templates/change.html.erb
|
111
|
+
- lib/generators/bootswatch_rails/sorcery/templates/edit.html.erb
|
112
|
+
- lib/generators/bootswatch_rails/sorcery/templates/index.html.erb
|
113
|
+
- lib/generators/bootswatch_rails/sorcery/templates/initializer.rb
|
114
|
+
- lib/generators/bootswatch_rails/sorcery/templates/log_in.html.erb
|
115
|
+
- lib/generators/bootswatch_rails/sorcery/templates/new.html.erb
|
116
|
+
- lib/generators/bootswatch_rails/sorcery/templates/password.html.erb
|
117
|
+
- lib/generators/bootswatch_rails/sorcery/templates/reset_password_email.html.erb
|
118
|
+
- lib/generators/bootswatch_rails/sorcery/templates/show.html.erb
|
119
|
+
- lib/generators/bootswatch_rails/sorcery/templates/sorcery.de.yml
|
120
|
+
- lib/generators/bootswatch_rails/sorcery/templates/user_mailer.rb
|
121
|
+
- lib/generators/bootswatch_rails/sorcery/templates/user_migration.rb
|
122
|
+
- lib/generators/bootswatch_rails/sorcery/templates/user_model.rb
|
123
|
+
- lib/generators/bootswatch_rails/sorcery/templates/users_controller.rb
|
108
124
|
- vendor/assets/fonts/glyphicons-halflings-regular.eot
|
109
125
|
- vendor/assets/fonts/glyphicons-halflings-regular.svg
|
110
126
|
- vendor/assets/fonts/glyphicons-halflings-regular.ttf
|
@@ -145,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
161
|
version: '0'
|
146
162
|
requirements: []
|
147
163
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.
|
164
|
+
rubygems_version: 2.3.0
|
149
165
|
signing_key:
|
150
166
|
specification_version: 4
|
151
167
|
summary: Add bootswatch.com themes to the Rails asset pipeline
|