refinerycms-authentication 1.0.11 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/refinery/admin/users_controller.rb +100 -0
- data/app/controllers/refinery/passwords_controller.rb +51 -0
- data/app/controllers/refinery/sessions_controller.rb +26 -0
- data/app/controllers/refinery/users_controller.rb +42 -0
- data/app/helpers/refinery/sessions_helper.rb +4 -0
- data/app/helpers/refinery/users_helper.rb +4 -0
- data/app/mailers/refinery/user_mailer.rb +22 -0
- data/app/models/refinery/role.rb +18 -0
- data/app/models/refinery/roles_users.rb +8 -0
- data/app/models/refinery/user.rb +94 -0
- data/app/models/refinery/user_plugin.rb +8 -0
- data/app/views/refinery/admin/users/_actions.html.erb +6 -0
- data/app/views/{admin → refinery/admin}/users/_form.html.erb +15 -19
- data/app/views/{admin → refinery/admin}/users/_records.html.erb +1 -1
- data/app/views/refinery/admin/users/_user.html.erb +21 -0
- data/app/views/refinery/admin/users/_users.html.erb +4 -0
- data/app/views/refinery/admin/users/edit.html.erb +1 -0
- data/app/views/refinery/admin/users/index.html.erb +6 -0
- data/app/views/refinery/admin/users/new.html.erb +1 -0
- data/app/views/{layouts → refinery/layouts}/login.html.erb +3 -4
- data/app/views/refinery/passwords/edit.html.erb +26 -0
- data/app/views/refinery/passwords/new.html.erb +17 -0
- data/app/views/{sessions → refinery/sessions}/new.html.erb +6 -8
- data/app/views/refinery/user_mailer/reset_notification.html.erb +12 -0
- data/app/views/refinery/user_mailer/reset_notification.text.plain.erb +7 -0
- data/app/views/refinery/users/new.html.erb +29 -0
- data/config/locales/bg.yml +55 -55
- data/config/locales/cs.yml +58 -58
- data/config/locales/da.yml +55 -55
- data/config/locales/de.yml +55 -55
- data/config/locales/el.yml +55 -55
- data/config/locales/en.yml +55 -55
- data/config/locales/es.yml +55 -60
- data/config/locales/fi.yml +55 -55
- data/config/locales/fr.yml +55 -55
- data/config/locales/it.yml +51 -57
- data/config/locales/ja.yml +72 -0
- data/config/locales/ko.yml +72 -0
- data/config/locales/lt.yml +46 -46
- data/config/locales/lv.yml +55 -55
- data/config/locales/nb.yml +55 -55
- data/config/locales/nl.yml +55 -55
- data/config/locales/pl.yml +53 -59
- data/config/locales/pt-BR.yml +52 -52
- data/config/locales/rs.yml +62 -61
- data/config/locales/ru.yml +52 -52
- data/config/locales/sk.yml +55 -55
- data/config/locales/sl.yml +55 -54
- data/config/locales/sv.yml +52 -52
- data/config/locales/vi.yml +55 -55
- data/config/locales/zh-CN.yml +55 -55
- data/config/locales/zh-TW.yml +55 -55
- data/config/routes.rb +30 -24
- data/db/migrate/20100913234705_create_refinerycms_authentication_schema.rb +30 -30
- data/lib/refinery/authenticated_system.rb +40 -0
- data/lib/refinery/authentication/configuration.rb +9 -0
- data/lib/refinery/authentication/engine.rb +36 -0
- data/lib/refinery/authentication.rb +29 -0
- data/lib/refinerycms-authentication.rb +1 -54
- data/refinerycms-authentication.gemspec +14 -109
- data/spec/controllers/refinery/admin/users_controller_spec.rb +73 -0
- data/spec/factories/user.rb +38 -0
- data/spec/models/refinery/user_spec.rb +220 -0
- data/spec/requests/refinery/admin/users_spec.rb +49 -0
- data/spec/requests/refinery/passwords_spec.rb +84 -0
- data/spec/requests/refinery/sessions_spec.rb +62 -0
- metadata +109 -124
- data/app/controllers/admin/users_controller.rb +0 -86
- data/app/controllers/passwords_controller.rb +0 -42
- data/app/controllers/sessions_controller.rb +0 -23
- data/app/controllers/users_controller.rb +0 -67
- data/app/helpers/sessions_helper.rb +0 -2
- data/app/helpers/users_helper.rb +0 -2
- data/app/mailers/user_mailer.rb +0 -20
- data/app/models/role.rb +0 -16
- data/app/models/roles_users.rb +0 -6
- data/app/models/user.rb +0 -65
- data/app/models/user_plugin.rb +0 -6
- data/app/views/admin/users/_actions.html.erb +0 -5
- data/app/views/admin/users/_user.html.erb +0 -19
- data/app/views/admin/users/_users.html.erb +0 -4
- data/app/views/admin/users/edit.html.erb +0 -1
- data/app/views/admin/users/index.html.erb +0 -6
- data/app/views/admin/users/new.html.erb +0 -1
- data/app/views/passwords/edit.html.erb +0 -31
- data/app/views/passwords/new.html.erb +0 -18
- data/app/views/user_mailer/reset_notification.html.erb +0 -12
- data/app/views/user_mailer/reset_notification.text.plain.erb +0 -7
- data/app/views/users/new.html.erb +0 -41
- data/config/locales/jp.yml +0 -72
- data/config/locales/lolcat.yml +0 -55
- data/db/migrate/20100929035252_add_missing_indexes_to_roles_users.rb +0 -11
- data/db/migrate/20101206013505_change_to_devise_users_table.rb +0 -27
- data/db/migrate/20110106184757_add_remember_created_at_to_users.rb +0 -9
- data/db/migrate/20110325213325_remove_password_salt_from_users.rb +0 -13
- data/features/lost_password.feature +0 -49
- data/features/manage_users.feature +0 -88
- data/features/step_definitions/lost_password.rb +0 -8
- data/features/step_definitions/user_steps.rb +0 -41
- data/features/support/factories.rb +0 -32
- data/features/support/paths.rb +0 -24
- data/lib/authenticated_system.rb +0 -29
- data/lib/gemspec.rb +0 -38
- data/lib/generators/refinerycms_authentication_generator.rb +0 -8
- data/spec/models/user_spec.rb +0 -152
metadata
CHANGED
@@ -1,116 +1,92 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: refinerycms-authentication
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
version: 2.0.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
- Resolve Digital
|
12
|
+
authors:
|
9
13
|
- Philip Arndt
|
14
|
+
- "U\xC4\xA3is Ozols"
|
10
15
|
- David Jones
|
11
16
|
- Steven Heidel
|
12
|
-
- Uģis Ozols
|
13
17
|
autorequire:
|
14
18
|
bindir: bin
|
15
19
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
requirement: !ruby/object:Gem::Requirement
|
21
|
-
none: false
|
22
|
-
requirements:
|
23
|
-
- - '='
|
24
|
-
- !ruby/object:Gem::Version
|
25
|
-
version: 1.0.11
|
26
|
-
type: :runtime
|
20
|
+
|
21
|
+
date: 2012-03-01 00:00:00 Z
|
22
|
+
dependencies:
|
23
|
+
- !ruby/object:Gem::Dependency
|
27
24
|
prerelease: false
|
28
|
-
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
29
26
|
none: false
|
30
|
-
requirements:
|
31
|
-
- - '='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.0.11
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: activerecord
|
36
|
-
requirement: !ruby/object:Gem::Requirement
|
37
|
-
none: false
|
38
|
-
requirements:
|
27
|
+
requirements:
|
39
28
|
- - ~>
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: 3.0.10
|
50
|
-
- !ruby/object:Gem::Dependency
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 15
|
31
|
+
segments:
|
32
|
+
- 2
|
33
|
+
- 0
|
34
|
+
- 0
|
35
|
+
version: 2.0.0
|
36
|
+
version_requirements: *id001
|
51
37
|
name: devise
|
52
|
-
requirement: !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
|
-
requirements:
|
55
|
-
- - ~>
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: 1.4.3
|
58
38
|
type: :runtime
|
39
|
+
- !ruby/object:Gem::Dependency
|
59
40
|
prerelease: false
|
60
|
-
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ~>
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: 1.4.3
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
name: friendly_id_globalize3
|
68
|
-
requirement: !ruby/object:Gem::Requirement
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
69
42
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
|
43
|
+
requirements:
|
44
|
+
- - "="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
hash: 15
|
47
|
+
segments:
|
48
|
+
- 2
|
49
|
+
- 0
|
50
|
+
- 0
|
51
|
+
version: 2.0.0
|
52
|
+
version_requirements: *id002
|
53
|
+
name: refinerycms-core
|
74
54
|
type: :runtime
|
75
|
-
|
76
|
-
version_requirements: !ruby/object:Gem::Requirement
|
77
|
-
none: false
|
78
|
-
requirements:
|
79
|
-
- - ~>
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: 3.2.1
|
82
|
-
description: The default authentication engine for Refinery CMS
|
55
|
+
description: The default authentication extension for Refinery CMS
|
83
56
|
email: info@refinerycms.com
|
84
57
|
executables: []
|
58
|
+
|
85
59
|
extensions: []
|
60
|
+
|
86
61
|
extra_rdoc_files: []
|
87
|
-
|
88
|
-
|
89
|
-
- app/controllers/
|
90
|
-
- app/controllers/
|
91
|
-
- app/controllers/
|
92
|
-
- app/
|
93
|
-
- app/helpers/
|
94
|
-
- app/
|
95
|
-
- app/
|
96
|
-
- app/models/
|
97
|
-
- app/models/
|
98
|
-
- app/models/
|
99
|
-
- app/
|
100
|
-
- app/views/admin/users/
|
101
|
-
- app/views/admin/users/
|
102
|
-
- app/views/admin/users/
|
103
|
-
- app/views/admin/users/
|
104
|
-
- app/views/admin/users/
|
105
|
-
- app/views/admin/users/
|
106
|
-
- app/views/admin/users/
|
107
|
-
- app/views/
|
108
|
-
- app/views/
|
109
|
-
- app/views/passwords/
|
110
|
-
- app/views/
|
111
|
-
- app/views/
|
112
|
-
- app/views/user_mailer/reset_notification.
|
113
|
-
- app/views/
|
62
|
+
|
63
|
+
files:
|
64
|
+
- app/controllers/refinery/admin/users_controller.rb
|
65
|
+
- app/controllers/refinery/passwords_controller.rb
|
66
|
+
- app/controllers/refinery/sessions_controller.rb
|
67
|
+
- app/controllers/refinery/users_controller.rb
|
68
|
+
- app/helpers/refinery/sessions_helper.rb
|
69
|
+
- app/helpers/refinery/users_helper.rb
|
70
|
+
- app/mailers/refinery/user_mailer.rb
|
71
|
+
- app/models/refinery/role.rb
|
72
|
+
- app/models/refinery/roles_users.rb
|
73
|
+
- app/models/refinery/user.rb
|
74
|
+
- app/models/refinery/user_plugin.rb
|
75
|
+
- app/views/refinery/admin/users/_actions.html.erb
|
76
|
+
- app/views/refinery/admin/users/_form.html.erb
|
77
|
+
- app/views/refinery/admin/users/_records.html.erb
|
78
|
+
- app/views/refinery/admin/users/_user.html.erb
|
79
|
+
- app/views/refinery/admin/users/_users.html.erb
|
80
|
+
- app/views/refinery/admin/users/edit.html.erb
|
81
|
+
- app/views/refinery/admin/users/index.html.erb
|
82
|
+
- app/views/refinery/admin/users/new.html.erb
|
83
|
+
- app/views/refinery/layouts/login.html.erb
|
84
|
+
- app/views/refinery/passwords/edit.html.erb
|
85
|
+
- app/views/refinery/passwords/new.html.erb
|
86
|
+
- app/views/refinery/sessions/new.html.erb
|
87
|
+
- app/views/refinery/user_mailer/reset_notification.html.erb
|
88
|
+
- app/views/refinery/user_mailer/reset_notification.text.plain.erb
|
89
|
+
- app/views/refinery/users/new.html.erb
|
114
90
|
- config/locales/bg.yml
|
115
91
|
- config/locales/cs.yml
|
116
92
|
- config/locales/da.yml
|
@@ -121,8 +97,8 @@ files:
|
|
121
97
|
- config/locales/fi.yml
|
122
98
|
- config/locales/fr.yml
|
123
99
|
- config/locales/it.yml
|
124
|
-
- config/locales/
|
125
|
-
- config/locales/
|
100
|
+
- config/locales/ja.yml
|
101
|
+
- config/locales/ko.yml
|
126
102
|
- config/locales/lt.yml
|
127
103
|
- config/locales/lv.yml
|
128
104
|
- config/locales/nb.yml
|
@@ -139,47 +115,56 @@ files:
|
|
139
115
|
- config/locales/zh-TW.yml
|
140
116
|
- config/routes.rb
|
141
117
|
- db/migrate/20100913234705_create_refinerycms_authentication_schema.rb
|
142
|
-
-
|
143
|
-
-
|
144
|
-
-
|
145
|
-
-
|
146
|
-
- features/lost_password.feature
|
147
|
-
- features/manage_users.feature
|
148
|
-
- features/step_definitions/lost_password.rb
|
149
|
-
- features/step_definitions/user_steps.rb
|
150
|
-
- features/support/factories.rb
|
151
|
-
- features/support/paths.rb
|
152
|
-
- lib/authenticated_system.rb
|
153
|
-
- lib/gemspec.rb
|
154
|
-
- lib/generators/refinerycms_authentication_generator.rb
|
118
|
+
- lib/refinery/authenticated_system.rb
|
119
|
+
- lib/refinery/authentication.rb
|
120
|
+
- lib/refinery/authentication/configuration.rb
|
121
|
+
- lib/refinery/authentication/engine.rb
|
155
122
|
- lib/refinerycms-authentication.rb
|
156
123
|
- license.md
|
157
124
|
- refinerycms-authentication.gemspec
|
158
|
-
- spec/
|
125
|
+
- spec/controllers/refinery/admin/users_controller_spec.rb
|
126
|
+
- spec/factories/user.rb
|
127
|
+
- spec/models/refinery/user_spec.rb
|
128
|
+
- spec/requests/refinery/admin/users_spec.rb
|
129
|
+
- spec/requests/refinery/passwords_spec.rb
|
130
|
+
- spec/requests/refinery/sessions_spec.rb
|
159
131
|
homepage: http://refinerycms.com
|
160
|
-
licenses:
|
132
|
+
licenses:
|
161
133
|
- MIT
|
162
134
|
post_install_message:
|
163
135
|
rdoc_options: []
|
164
|
-
|
136
|
+
|
137
|
+
require_paths:
|
165
138
|
- lib
|
166
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
167
140
|
none: false
|
168
|
-
requirements:
|
169
|
-
- -
|
170
|
-
- !ruby/object:Gem::Version
|
171
|
-
|
172
|
-
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
hash: 3
|
145
|
+
segments:
|
146
|
+
- 0
|
147
|
+
version: "0"
|
148
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
149
|
none: false
|
174
|
-
requirements:
|
175
|
-
- -
|
176
|
-
- !ruby/object:Gem::Version
|
177
|
-
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
hash: 3
|
154
|
+
segments:
|
155
|
+
- 0
|
156
|
+
version: "0"
|
178
157
|
requirements: []
|
158
|
+
|
179
159
|
rubyforge_project: refinerycms
|
180
|
-
rubygems_version: 1.8.
|
160
|
+
rubygems_version: 1.8.17
|
181
161
|
signing_key:
|
182
162
|
specification_version: 3
|
183
|
-
summary: Authentication
|
184
|
-
test_files:
|
185
|
-
|
163
|
+
summary: Authentication extension for Refinery CMS
|
164
|
+
test_files:
|
165
|
+
- spec/controllers/refinery/admin/users_controller_spec.rb
|
166
|
+
- spec/factories/user.rb
|
167
|
+
- spec/models/refinery/user_spec.rb
|
168
|
+
- spec/requests/refinery/admin/users_spec.rb
|
169
|
+
- spec/requests/refinery/passwords_spec.rb
|
170
|
+
- spec/requests/refinery/sessions_spec.rb
|
@@ -1,86 +0,0 @@
|
|
1
|
-
module Admin
|
2
|
-
class UsersController < Admin::BaseController
|
3
|
-
|
4
|
-
crudify :user,
|
5
|
-
:order => 'username ASC',
|
6
|
-
:title_attribute => 'username',
|
7
|
-
:xhr_paging => true
|
8
|
-
|
9
|
-
before_filter :load_available_plugins_and_roles, :only => [:new, :create, :edit, :update]
|
10
|
-
|
11
|
-
def new
|
12
|
-
@user = User.new
|
13
|
-
@selected_plugin_names = []
|
14
|
-
end
|
15
|
-
|
16
|
-
def create
|
17
|
-
@user = User.new(params[:user])
|
18
|
-
@selected_plugin_names = params[:user][:plugins] || []
|
19
|
-
@selected_role_names = params[:user][:roles] || []
|
20
|
-
|
21
|
-
if @user.save
|
22
|
-
@user.plugins = @selected_plugin_names
|
23
|
-
# if the user is a superuser and can assign roles according to this site's
|
24
|
-
# settings then the roles are set with the POST data.
|
25
|
-
unless current_user.has_role?(:superuser) and RefinerySetting.find_or_set(:superuser_can_assign_roles, false)
|
26
|
-
@user.add_role(:refinery)
|
27
|
-
else
|
28
|
-
@user.roles = @selected_role_names.collect{|r| Role[r.downcase.to_sym]}
|
29
|
-
end
|
30
|
-
|
31
|
-
redirect_to(admin_users_url, :notice => t('created', :what => @user.username, :scope => 'refinery.crudify'))
|
32
|
-
else
|
33
|
-
render :action => 'new'
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def edit
|
38
|
-
@user = User.find params[:id]
|
39
|
-
@selected_plugin_names = @user.plugins.collect{|p| p.name}
|
40
|
-
end
|
41
|
-
|
42
|
-
def update
|
43
|
-
# Store what the user selected.
|
44
|
-
@selected_role_names = params[:user].delete(:roles) || []
|
45
|
-
unless current_user.has_role?(:superuser) and RefinerySetting.find_or_set(:superuser_can_assign_roles, false)
|
46
|
-
@selected_role_names = @user.roles.collect{|r| r.title}
|
47
|
-
end
|
48
|
-
@selected_plugin_names = params[:user][:plugins]
|
49
|
-
|
50
|
-
# Prevent the current user from locking themselves out of the User manager
|
51
|
-
if current_user.id == @user.id and (params[:user][:plugins].exclude?("refinery_users") || @selected_role_names.map(&:downcase).exclude?("refinery"))
|
52
|
-
flash.now[:error] = t('cannot_remove_user_plugin_from_current_user', :scope => 'admin.users.update')
|
53
|
-
render :action => "edit"
|
54
|
-
else
|
55
|
-
# Store the current plugins and roles for this user.
|
56
|
-
@previously_selected_plugin_names = @user.plugins.collect{|p| p.name}
|
57
|
-
@previously_selected_roles = @user.roles
|
58
|
-
@user.roles = @selected_role_names.collect{|r| Role[r.downcase.to_sym]}
|
59
|
-
if params[:user][:password].blank? and params[:user][:password_confirmation].blank?
|
60
|
-
params[:user].delete(:password)
|
61
|
-
params[:user].delete(:password_confirmation)
|
62
|
-
end
|
63
|
-
|
64
|
-
if @user.update_attributes(params[:user])
|
65
|
-
redirect_to admin_users_url, :notice => t('updated', :what => @user.username, :scope => 'refinery.crudify')
|
66
|
-
else
|
67
|
-
@user.plugins = @previously_selected_plugin_names
|
68
|
-
@user.roles = @previously_selected_roles
|
69
|
-
@user.save
|
70
|
-
render :action => 'edit'
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
protected
|
76
|
-
|
77
|
-
def load_available_plugins_and_roles
|
78
|
-
@available_plugins = ::Refinery::Plugins.registered.in_menu.collect{|a|
|
79
|
-
{:name => a.name, :title => a.title}
|
80
|
-
}.sort_by {|a| a[:title]}
|
81
|
-
|
82
|
-
@available_roles = Role.all
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
class PasswordsController < ::Devise::PasswordsController
|
2
|
-
layout 'login'
|
3
|
-
|
4
|
-
# Rather than overriding devise, it seems better to just apply the notice here.
|
5
|
-
after_filter :give_notice, :only => [:update]
|
6
|
-
def give_notice
|
7
|
-
unless %w(notice error alert).include?(flash.keys.map(&:to_s)) or @user.errors.any?
|
8
|
-
flash[:notice] = t('successful', :scope => 'users.reset', :email => @user.email)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
protected :give_notice
|
12
|
-
|
13
|
-
# GET /registrations/password/edit?reset_password_token=abcdef
|
14
|
-
def edit
|
15
|
-
if params[:reset_password_token] and (@user = User.where(:reset_password_token => params[:reset_password_token]).first).present?
|
16
|
-
render_with_scope :edit
|
17
|
-
else
|
18
|
-
redirect_to(new_user_password_url, :flash => ({
|
19
|
-
:error => t('code_invalid', :scope => 'users.reset')
|
20
|
-
}))
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# POST /registrations/password
|
25
|
-
def create
|
26
|
-
if params[:user].present? and (email = params[:user][:email]).present? and
|
27
|
-
(user = User.where(:email => email).first).present?
|
28
|
-
|
29
|
-
# Call devise reset function.
|
30
|
-
user.send(:generate_reset_password_token!)
|
31
|
-
UserMailer.reset_notification(user, request).deliver
|
32
|
-
redirect_to new_user_session_path, :notice => t('email_reset_sent', :scope => 'users.forgot') and return
|
33
|
-
else
|
34
|
-
flash.now[:error] = if (email = params[:user][:email]).blank?
|
35
|
-
t('blank_email', :scope => 'users.forgot')
|
36
|
-
else
|
37
|
-
t('email_not_associated_with_account_html', :email => ERB::Util.html_escape(email), :scope => 'users.forgot').html_safe
|
38
|
-
end
|
39
|
-
render_with_scope :new
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class SessionsController < ::Devise::SessionsController
|
2
|
-
layout 'login'
|
3
|
-
|
4
|
-
before_filter :clear_unauthenticated_flash, :only => [:new]
|
5
|
-
|
6
|
-
def create
|
7
|
-
super
|
8
|
-
rescue ::BCrypt::Errors::InvalidSalt, ::BCrypt::Errors::InvalidHash
|
9
|
-
flash[:error] = t('password_encryption', :scope => 'users.forgot')
|
10
|
-
redirect_to new_user_password_path
|
11
|
-
end
|
12
|
-
|
13
|
-
protected
|
14
|
-
# We don't like this alert.
|
15
|
-
def clear_unauthenticated_flash
|
16
|
-
if flash.keys.include?(:alert) and flash.values.any?{|v|
|
17
|
-
['unauthenticated', t('unauthenticated', :scope => 'devise.failure')].include?(v)
|
18
|
-
}
|
19
|
-
flash.delete(:alert)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
class UsersController < ::Devise::RegistrationsController
|
2
|
-
|
3
|
-
# Protect these actions behind an admin login
|
4
|
-
before_filter :redirect?, :only => [:new, :create]
|
5
|
-
|
6
|
-
layout 'login'
|
7
|
-
|
8
|
-
def new
|
9
|
-
@user = User.new
|
10
|
-
end
|
11
|
-
|
12
|
-
# This method should only be used to create the first Refinery user.
|
13
|
-
def create
|
14
|
-
@user = User.new(params[:user])
|
15
|
-
@selected_plugin_titles = params[:user][:plugins] || []
|
16
|
-
|
17
|
-
@user.save if @user.valid?
|
18
|
-
|
19
|
-
if @user.errors.empty?
|
20
|
-
@user.add_role(:refinery)
|
21
|
-
@user.plugins = @selected_plugin_titles
|
22
|
-
@user.save
|
23
|
-
if Role[:refinery].users.count == 1
|
24
|
-
# this is the superuser if this user is the only user.
|
25
|
-
@user.add_role(:superuser)
|
26
|
-
@user.save
|
27
|
-
|
28
|
-
# set this user as the recipient of inquiry notifications, if we're using that engine.
|
29
|
-
if defined?(InquirySetting) and
|
30
|
-
(notification_recipients = InquirySetting.find_or_create_by_name("Notification Recipients")).present?
|
31
|
-
notification_recipients.update_attributes({
|
32
|
-
:value => @user.email,
|
33
|
-
:destroyable => false
|
34
|
-
})
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
flash[:message] = "<h2>#{t('welcome', :scope => 'users.create', :who => @user.username).gsub(/\.$/, '')}.</h2>".html_safe
|
39
|
-
|
40
|
-
site_name_setting = RefinerySetting.find_or_create_by_name('site_name', :value => "Company Name")
|
41
|
-
if site_name_setting.value.to_s =~ /^(|Company\ Name)$/ or Role[:refinery].users.count == 1
|
42
|
-
flash[:message] << "<p>#{t('setup_website_name_html', :scope => 'users',
|
43
|
-
:link => edit_admin_refinery_setting_path(site_name_setting, :dialog => true),
|
44
|
-
:title => t('edit', :scope => 'admin.refinery_settings'))}</p>".html_safe
|
45
|
-
end
|
46
|
-
sign_in(@user)
|
47
|
-
redirect_back_or_default(admin_root_url)
|
48
|
-
else
|
49
|
-
render :action => 'new'
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
protected
|
54
|
-
|
55
|
-
def redirect?
|
56
|
-
if refinery_user?
|
57
|
-
redirect_to admin_users_url
|
58
|
-
elsif refinery_users_exist?
|
59
|
-
redirect_to new_user_session_path
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def refinery_users_exist?
|
64
|
-
Role[:refinery].users.any?
|
65
|
-
end
|
66
|
-
|
67
|
-
end
|
data/app/helpers/users_helper.rb
DELETED
data/app/mailers/user_mailer.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
class UserMailer < ActionMailer::Base
|
2
|
-
|
3
|
-
def reset_notification(user, request)
|
4
|
-
@user = user
|
5
|
-
@url = edit_user_password_url(:host => request.host_with_port,
|
6
|
-
:reset_password_token => @user.reset_password_token)
|
7
|
-
|
8
|
-
domain = request.domain(RefinerySetting.find_or_set(:tld_length, 1))
|
9
|
-
|
10
|
-
mail(:to => user.email,
|
11
|
-
:subject => t('subject', :scope => 'user_mailer.reset_notification'),
|
12
|
-
:from => "\"#{RefinerySetting[:site_name]}\" <no-reply@#{domain}>")
|
13
|
-
end
|
14
|
-
|
15
|
-
protected
|
16
|
-
|
17
|
-
def url_prefix(request)
|
18
|
-
"#{request.protocol}#{request.host_with_port}"
|
19
|
-
end
|
20
|
-
end
|
data/app/models/role.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
class Role < ActiveRecord::Base
|
2
|
-
|
3
|
-
has_and_belongs_to_many :users
|
4
|
-
|
5
|
-
before_validation :camelize_title
|
6
|
-
validates :title, :uniqueness => true
|
7
|
-
|
8
|
-
def camelize_title(role_title = self.title)
|
9
|
-
self.title = role_title.to_s.camelize
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.[](title)
|
13
|
-
find_or_create_by_title(title.to_s.camelize)
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
data/app/models/roles_users.rb
DELETED
data/app/models/user.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'devise'
|
2
|
-
|
3
|
-
class User < ActiveRecord::Base
|
4
|
-
has_and_belongs_to_many :roles
|
5
|
-
has_many :plugins, :class_name => "UserPlugin", :order => "position ASC", :dependent => :destroy
|
6
|
-
has_friendly_id :username, :use_slug => true
|
7
|
-
|
8
|
-
# Include default devise modules. Others available are:
|
9
|
-
# :token_authenticatable, :confirmable, :lockable and :timeoutable
|
10
|
-
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
|
11
|
-
|
12
|
-
# Setup accessible (or protected) attributes for your model
|
13
|
-
# :login is a virtual attribute for authenticating by either username or email
|
14
|
-
# This is in addition to a real persisted field like 'username'
|
15
|
-
attr_accessor :login
|
16
|
-
attr_accessible :email, :password, :password_confirmation, :remember_me, :username, :plugins, :login
|
17
|
-
|
18
|
-
validates :username, :presence => true, :uniqueness => true
|
19
|
-
|
20
|
-
class << self
|
21
|
-
# Configure authentication_keys here instead of devise.rb initialzer so we don't overwrite standard devise models
|
22
|
-
def authentication_keys
|
23
|
-
[:login]
|
24
|
-
end
|
25
|
-
|
26
|
-
# Find user by email or username.
|
27
|
-
# https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign_in-using-their-username-or-email-address
|
28
|
-
def find_for_database_authentication(conditions)
|
29
|
-
value = conditions[authentication_keys.first]
|
30
|
-
where(["username = :value OR email = :value", { :value => value }]).first
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def plugins=(plugin_names)
|
35
|
-
if persisted? # don't add plugins when the user_id is nil.
|
36
|
-
UserPlugin.delete_all(:user_id => id)
|
37
|
-
|
38
|
-
plugin_names.each_with_index do |plugin_name, index|
|
39
|
-
plugins.create(:name => plugin_name, :position => index) if plugin_name.is_a?(String)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def authorized_plugins
|
45
|
-
plugins.collect { |p| p.name } | Refinery::Plugins.always_allowed.names
|
46
|
-
end
|
47
|
-
|
48
|
-
def can_delete?(user_to_delete = self)
|
49
|
-
user_to_delete.persisted? and
|
50
|
-
id != user_to_delete.id and
|
51
|
-
!user_to_delete.has_role?(:superuser) and
|
52
|
-
Role[:refinery].users.count > 1
|
53
|
-
end
|
54
|
-
|
55
|
-
def add_role(title)
|
56
|
-
raise ArgumentException, "Role should be the title of the role not a role object." if title.is_a?(Role)
|
57
|
-
roles << Role[title] unless has_role?(title)
|
58
|
-
end
|
59
|
-
|
60
|
-
def has_role?(title)
|
61
|
-
raise ArgumentException, "Role should be the title of the role not a role object." if title.is_a?(Role)
|
62
|
-
roles.any?{|r| r.title == title.to_s.camelize}
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
data/app/models/user_plugin.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
<li id="sortable_<%= user.id %>" class='clearfix record <%= cycle("on", "on-hover") %>'>
|
2
|
-
<span class='title'>
|
3
|
-
<strong><%= user.username %></strong>
|
4
|
-
<span class="preview">
|
5
|
-
<%= t('.preview', :who => user.email, :created_at => l(user.created_at, :format => :short)) %>
|
6
|
-
</span>
|
7
|
-
</span>
|
8
|
-
<span class='actions'>
|
9
|
-
<%= mail_to user.email, refinery_icon_tag('email_go.png'),
|
10
|
-
:title => t('.email_user') %>
|
11
|
-
<%= link_to refinery_icon_tag('application_edit.png'), edit_admin_user_path(user),
|
12
|
-
:title => t('edit', :scope => 'admin.users')%>
|
13
|
-
<%= link_to refinery_icon_tag('delete.png'), admin_user_path(user),
|
14
|
-
:class => "cancel confirm-delete",
|
15
|
-
:title => t('delete', :scope => 'admin.users'),
|
16
|
-
:method => :delete,
|
17
|
-
:confirm => t('message', :scope => 'shared.admin.delete', :title => user.username) if current_user.can_delete?(user) %>
|
18
|
-
</span>
|
19
|
-
</li>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render :partial => 'form' %>
|