muck-users 0.2.23 → 0.3.0

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.
Files changed (67) hide show
  1. data/README.rdoc +3 -1
  2. data/VERSION +1 -1
  3. data/app/controllers/admin/muck/access_codes_controller.rb +78 -0
  4. data/app/controllers/admin/muck/roles_controller.rb +34 -24
  5. data/app/controllers/admin/muck/users_controller.rb +56 -21
  6. data/app/controllers/muck/access_code_requests_controller.rb +27 -0
  7. data/app/controllers/muck/activations_controller.rb +0 -1
  8. data/app/controllers/muck/users_controller.rb +122 -110
  9. data/app/models/role.rb +5 -2
  10. data/app/models/user_mailer.rb +7 -0
  11. data/app/views/access_code_requests/new.html.erb +7 -0
  12. data/app/views/access_code_requests/show.html.erb +1 -0
  13. data/app/views/admin/access_codes/_access_code.html.erb +8 -0
  14. data/app/views/admin/access_codes/_form.html.erb +15 -0
  15. data/app/views/admin/access_codes/_user.html.erb +6 -0
  16. data/app/views/admin/access_codes/bulk.html.erb +12 -0
  17. data/app/views/admin/access_codes/edit.html.erb +6 -0
  18. data/app/views/admin/access_codes/index.html.erb +18 -0
  19. data/app/views/admin/access_codes/new.html.erb +6 -0
  20. data/app/views/admin/access_codes/show.html.erb +30 -0
  21. data/app/views/admin/permissions/_permission.html.erb +3 -0
  22. data/app/views/admin/roles/_role.html.erb +5 -9
  23. data/app/views/admin/roles/edit.html.erb +4 -17
  24. data/app/views/admin/roles/index.html.erb +16 -8
  25. data/app/views/admin/roles/new.html.erb +4 -16
  26. data/app/views/admin/roles/show.html.erb +3 -7
  27. data/app/views/admin/users/_activate.html.erb +2 -2
  28. data/app/views/admin/users/_row.html.erb +8 -2
  29. data/app/views/admin/users/_table.html.erb +10 -15
  30. data/app/views/admin/users/permissions.html.erb +8 -0
  31. data/app/views/user_mailer/access_code.text.html.erb +3 -0
  32. data/app/views/user_mailer/access_code.text.plain.erb +5 -0
  33. data/app/views/users/_signup_form.html.erb +7 -0
  34. data/app/views/users/welcome.html.erb +1 -1
  35. data/config/muck_users_routes.rb +5 -2
  36. data/db/migrate/20100123035450_create_access_codes.rb +19 -0
  37. data/db/migrate/20100123233654_create_access_code_requests.rb +14 -0
  38. data/lib/action_controller/authentic_application.rb +1 -1
  39. data/lib/active_record/acts/muck_access_code.rb +75 -0
  40. data/lib/active_record/acts/muck_access_code_request.rb +33 -0
  41. data/lib/active_record/acts/muck_user.rb +13 -1
  42. data/lib/muck_users.rb +8 -1
  43. data/lib/muck_users/muck_custom_form_builder.rb +10 -0
  44. data/locales/en.yml +163 -102
  45. data/muck-users.gemspec +41 -2
  46. data/test/rails_root/app/models/access_code.rb +3 -0
  47. data/test/rails_root/app/models/access_code_request.rb +3 -0
  48. data/test/rails_root/app/models/user.rb +12 -9
  49. data/test/rails_root/config/environment.rb +1 -0
  50. data/test/rails_root/config/global_config.yml +1 -1
  51. data/test/rails_root/db/migrate/20100123035450_create_access_codes.rb +19 -0
  52. data/test/rails_root/db/migrate/20100123233654_create_access_code_requests.rb +14 -0
  53. data/test/rails_root/public/javascripts/jquery/jquery.jgrowl.js +9 -2
  54. data/test/rails_root/public/javascripts/muck.js +39 -13
  55. data/test/rails_root/public/stylesheets/admin.css +20 -3
  56. data/test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.2.custom.css +160 -0
  57. data/test/rails_root/public/stylesheets/jquery/redmond/jquery-ui-1.7.2.custom.css +160 -0
  58. data/test/rails_root/public/stylesheets/jquery/smoothness/jquery-ui-1.7.2.custom.css +160 -0
  59. data/test/rails_root/public/stylesheets/jquery/ui-lightness/jquery-ui-1.7.2.custom.css +160 -0
  60. data/test/rails_root/public/stylesheets/styles.css +9 -8
  61. data/test/rails_root/test/functional/access_code_requests_controller_test.rb +33 -0
  62. data/test/rails_root/test/functional/admin/access_codes_controller_test.rb +166 -0
  63. data/test/rails_root/test/unit/access_code_test.rb +100 -0
  64. data/test/rails_root/test/unit/role_test.rb +1 -0
  65. data/test/rails_root/test/unit/user_mailer_test.rb +13 -1
  66. data/test/rails_root/test/unit/user_test.rb +13 -9
  67. metadata +41 -2
data/README.rdoc CHANGED
@@ -35,7 +35,9 @@ Inside of global_config.yml add the following changing the emails to match your
35
35
  from_email: 'support@example.com'
36
36
  support_email: 'support@example.com'
37
37
  admin_email: 'admin@example.com'
38
-
38
+
39
+ require_access_code: false # Determines whether or not a access code is required to sign up.
40
+
39
41
  === Users migration
40
42
  The users table is frequently one of the most significant of any application. A migration to create users is not included in this
41
43
  gem so that the users tables can be customized appropriately. Here's an example migration:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.23
1
+ 0.3.0
@@ -0,0 +1,78 @@
1
+ class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
2
+
3
+ before_filter :setup_access_code, :except => [:index, :new, :create, :bulk, :bulk_create]
4
+
5
+ def index
6
+ @codes = AccessCode.by_alpha.paginate(:page => @page, :per_page => @per_page)
7
+ render :template => 'admin/access_codes/index'
8
+ end
9
+
10
+ def show
11
+ render :template => 'admin/access_codes/show'
12
+ end
13
+
14
+ def new
15
+ render :template => 'admin/access_codes/new'
16
+ end
17
+
18
+ def create
19
+ @access_code = AccessCode.new(params[:access_code])
20
+ if @access_code.save
21
+ flash[:notice] = 'Access Code was successfully added'
22
+ redirect_to admin_access_code_path(@access_code)
23
+ else
24
+ render :template => 'admin/access_codes/new'
25
+ end
26
+ end
27
+
28
+ def bulk
29
+ @access_code = AccessCode.new
30
+ @access_code.code = AccessCode.random_code
31
+ render :template => 'admin/access_codes/bulk'
32
+ end
33
+
34
+ def bulk_create
35
+ emails = params[:emails].split(',')
36
+ emails.each do |email|
37
+ @access_code = AccessCode.new(params[:access_code])
38
+ @access_code.unlimited = false
39
+ @access_code.use_limit = 1
40
+ @access_code.uses = 0
41
+ @access_code.code ||= AccessCode.random_code # If they specified a code then don't change it.
42
+ @access_code.save!
43
+ UserMailer.deliver_access_code(email, params[:subject], params[:message], @access_code.code)
44
+ end
45
+ flash[:notice] = translate('muck.users.bulk_access_codes_created', :email_count => emails.count)
46
+ redirect_to bulk_create_admin_access_codes_path
47
+ rescue ActiveRecord::RecordInvalid => ex
48
+ render :template => "admin/access_codes/bulk"
49
+ end
50
+
51
+ def edit
52
+ render :template => "admin/access_codes/edit"
53
+ end
54
+
55
+ def update
56
+ if @access_code.update_attributes(params[:access_code])
57
+ redirect_to(admin_access_code_path(@access_code))
58
+ else
59
+ flash[:notice] = 'There was a problem updating the access code.'
60
+ render :template => "admin/access_codes/edit"
61
+ end
62
+ end
63
+
64
+ def destroy
65
+ if @access_code.users.length <= 0
66
+ @access_code.destroy
67
+ flash[:notice] = "Deleted access code."
68
+ else
69
+ flash[:notice] = "Cannot delete access code it has users associated with it."
70
+ end
71
+ redirect_to admin_access_codes_path
72
+ end
73
+
74
+ protected
75
+ def setup_access_code
76
+ @access_code = AccessCode.find(params[:id])
77
+ end
78
+ end
@@ -2,54 +2,64 @@ class Admin::Muck::RolesController < Admin::Muck::BaseController
2
2
  unloadable
3
3
 
4
4
  def index
5
- @user = User.find(params[:user_id])
6
- @all_roles = Role.find(:all)
5
+ @roles = Role.by_alpha
6
+ render :template => 'admin/roles/index'
7
7
  end
8
8
 
9
9
  def show
10
- @role = Role.new(params[:role])
10
+ @role = Role.find(params[:id])
11
+ @users = @role.users.paginate(:page => @page, :per_page => @per_page)
12
+ render :template => 'admin/roles/show'
11
13
  end
12
14
 
13
15
  def new
14
16
  @role = Role.new(params[:role])
17
+ render :template => 'admin/roles/new', :layout => false
15
18
  end
16
19
 
17
20
  def create
18
21
  @role = Role.new(params[:role])
19
-
20
- respond_to do |format|
21
- if @role.save
22
- flash[:notice] = I18n.t('muck.roles.role_created')
23
- format.html { redirect_to(admin_roles_path(@role)) }
24
- format.xml { render :xml => @role, :status => :created, :location => @role }
25
- else
26
- format.html { render :action => "new" }
27
- format.xml { render :xml => @role.errors, :status => :unprocessable_entity }
28
- end
22
+ if @role.save
23
+ ajax_update_roles
24
+ else
25
+ output_admin_messages(@role)
29
26
  end
30
27
  end
31
28
 
32
29
  def edit
33
- @role = Role.new(params[:role])
30
+ @role = Role.find(params[:id])
31
+ render :template => 'admin/roles/edit', :layout => false
34
32
  end
35
33
 
36
34
  def update
37
- @user = User.find(params[:user_id])
38
35
  @role = Role.find(params[:id])
39
- unless @user.has_role?(@role.rolename)
40
- @user.roles << @role
36
+ if @role.update_attributes(params[:role])
37
+ ajax_update_roles
38
+ else
39
+ output_admin_messages(@role)
41
40
  end
42
- redirect_to :action => 'index'
43
41
  end
44
42
 
45
43
  def destroy
46
- @user = User.find(params[:user_id])
47
44
  @role = Role.find(params[:id])
48
- if @user.has_role?(@role.rolename)
49
- @user.roles.delete(@role)
45
+ if @role.rolename == 'administrator'
46
+ flash[:notice] = translate('muck.users.cant_delete_administrator_role')
47
+ output_admin_messages
48
+ else
49
+ @role.delete
50
+ render :update do |page|
51
+ page.remove @role.dom_id
52
+ end
50
53
  end
51
- redirect_to :action => 'index'
52
54
  end
53
55
 
54
- end
55
-
56
+ protected
57
+
58
+ def ajax_update_roles
59
+ render :update do |page|
60
+ page.replace_html 'current-roles', :partial => 'admin/roles/role', :collection => Role.by_alpha
61
+ page << "jQuery('.dialog').dialog('close');"
62
+ end
63
+ end
64
+
65
+ end
@@ -1,15 +1,23 @@
1
1
  class Admin::Muck::UsersController < Admin::Muck::BaseController
2
2
  unloadable
3
3
 
4
- before_filter :get_user, :only => [:update, :destroy]
4
+ before_filter :get_user, :only => [:update, :destroy, :permissions]
5
5
  before_filter :setup_subnavigation
6
6
 
7
7
  def index
8
- @user_count = User.count
9
- @user_inactive_count = User.inactive_count
10
- @users = User.by_newest.paginate(:page => @page, :per_page => @per_page)
11
8
  respond_to do |format|
12
- format.html { render :template => 'admin/users/index' }
9
+ format.html do
10
+ @user_count = User.count
11
+ @user_inactive_count = User.inactive_count
12
+ @users = User.by_newest.paginate(:page => @page, :per_page => @per_page, :include => ['roles'])
13
+ render :template => 'admin/users/index'
14
+ end
15
+ format.csv do
16
+ @users = User.find(:all)
17
+ headers["Content-Type"] = 'text/csv'
18
+ headers["Content-Disposition"] = "attachment; filename=\"users.csv\""
19
+ render :layout => false
20
+ end
13
21
  end
14
22
  end
15
23
 
@@ -61,24 +69,31 @@ class Admin::Muck::UsersController < Admin::Muck::BaseController
61
69
  end
62
70
 
63
71
  def update
64
- if is_me?(@user)
65
- message = I18n.t("muck.users.cannot_deactivate_yourself")
66
- else
67
- if @user.force_activate!
68
- message = I18n.t('muck.users.user_marked_active')
72
+
73
+ if params[:deactivate]
74
+ if is_me?(@user)
75
+ message = translate("muck.users.cannot_deactivate_yourself")
69
76
  else
70
- message = I18n.t('muck.users.user_marked_inactive')
71
- end
72
- end
73
- activate_text = '<div class="flasherror">' + message + '</div>'
74
- activate_text << render_to_string(:partial => 'admin/users/activate', :locals => {:user => @user})
75
- respond_to do |format|
76
- format.js do
77
- render :update do |page|
78
- page.replace_html @user.dom_id('link'), activate_text
77
+ if @user.deactivate!
78
+ return update_activate(translate('muck.users.user_marked_inactive'))
79
+ else
80
+ message = translate('muck.users.user_not_deactivated_error')
79
81
  end
80
82
  end
83
+ elsif params[:activate]
84
+ if @user.activate!
85
+ return update_activate(translate('muck.users.user_marked_active'))
86
+ else
87
+ message = translate('muck.users.user_not_activated_error')
88
+ end
89
+ else
90
+ params[:user][:role_ids] ||= []
91
+ if @user.update_attributes(params[:user])
92
+ return update_permissions(@user, translate('muck.users.updated_permissions'))
93
+ end
81
94
  end
95
+ flash[:notice] = message
96
+ output_admin_messages(@user)
82
97
  end
83
98
 
84
99
  def enable
@@ -106,7 +121,7 @@ class Admin::Muck::UsersController < Admin::Muck::BaseController
106
121
  @user.destroy
107
122
  respond_to do |format|
108
123
  format.html do
109
- flash[:notice] = I18n.t('muck.users.user_successfully_deleted', :login => @user.login)
124
+ flash[:notice] = translate('muck.users.user_successfully_deleted', :login => @user.login)
110
125
  redirect_to admin_users_path
111
126
  end
112
127
  format.xml { head :ok }
@@ -114,8 +129,28 @@ class Admin::Muck::UsersController < Admin::Muck::BaseController
114
129
  end
115
130
  end
116
131
 
117
- private
132
+ def permissions
133
+ render :template => 'admin/users/permissions', :layout => false
134
+ end
118
135
 
136
+ protected
137
+
138
+ def update_permissions(user, message)
139
+ flash[:notice] = message
140
+ render :update do |page|
141
+ page << "jQuery('.dialog').dialog('close');"
142
+ page.replace_html user.dom_id('permissions'), :partial => 'admin/permissions/permission', :collection => user.permissions, :locals => { :user => user }
143
+ end
144
+ end
145
+
146
+ def update_activate(message)
147
+ flash[:notice] = message
148
+ render :update do |page|
149
+ page.replace_html 'admin-messages', output_flash
150
+ page.replace_html @user.dom_id('link'), :partial => 'admin/users/activate', :locals => { :user => @user }
151
+ end
152
+ end
153
+
119
154
  def get_user
120
155
  @user = User.find(params[:id])
121
156
  end
@@ -0,0 +1,27 @@
1
+ class Muck::AccessCodeRequestsController < ApplicationController
2
+ unloadable
3
+ layout 'popup'
4
+
5
+ ssl_required :new, :create
6
+ before_filter :not_logged_in_required
7
+
8
+ def show
9
+ render :template => 'access_code_requests/show'
10
+ end
11
+
12
+ def new
13
+ @page_title = t('muck.users.request_access_code')
14
+ render :template => 'access_code_requests/new'
15
+ end
16
+
17
+ def create
18
+ @page_title = t('muck.users.request_access_code')
19
+ @access_code_request = AccessCodeRequest.new(params[:access_code_request])
20
+ if @access_code_request.save
21
+ redirect_to access_code_request_path(@access_code_request)
22
+ else
23
+ render :action => "access_code_requests/new"
24
+ end
25
+ end
26
+
27
+ end
@@ -1,4 +1,3 @@
1
- # new file app/controllers/activations_controller.rb
2
1
  class Muck::ActivationsController < ApplicationController
3
2
  unloadable
4
3
 
@@ -51,7 +51,7 @@ class Muck::UsersController < ApplicationController
51
51
  @page_title = t('muck.users.register_account', :application_name => GlobalConfig.application_name)
52
52
  cookies.delete :auth_token
53
53
  @user = User.new(params[:user])
54
-
54
+ check_access_code
55
55
  check_recaptcha
56
56
  success, path = setup_user
57
57
  after_create_response(success, path)
@@ -126,151 +126,163 @@ class Muck::UsersController < ApplicationController
126
126
 
127
127
  protected
128
128
 
129
- def valid_email?(email)
130
- user = User.new(:email => email)
131
- user.valid?
132
- if user.errors[:email]
133
- [false, user.errors[:email]]
134
- else
135
- [true, '']
129
+ def valid_email?(email)
130
+ user = User.new(:email => email)
131
+ user.valid?
132
+ if user.errors[:email]
133
+ [false, user.errors[:email]]
134
+ else
135
+ [true, '']
136
+ end
136
137
  end
137
- end
138
138
 
139
- def standard_response(template)
140
- respond_to do |format|
141
- format.html { render :template => "users/#{template}" }
142
- format.xml { render :xml => @user }
139
+ def standard_response(template)
140
+ respond_to do |format|
141
+ format.html { render :template => "users/#{template}" }
142
+ format.xml { render :xml => @user }
143
+ end
143
144
  end
144
- end
145
145
 
146
- def after_create_response(success, local_uri = '')
147
- if success
148
- respond_to do |format|
149
- format.html { redirect_to local_uri }
150
- format.xml { render :xml => @user, :status => :created, :location => user_url(@user) }
146
+ def after_create_response(success, local_uri = '')
147
+ if success
148
+ respond_to do |format|
149
+ format.html { redirect_to local_uri }
150
+ format.xml { render :xml => @user, :status => :created, :location => user_url(@user) }
151
+ end
152
+ else
153
+ respond_to do |format|
154
+ format.html { render :template => "users/new" }
155
+ format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
156
+ end
151
157
  end
152
- else
153
- respond_to do |format|
154
- format.html { render :template => "users/new" }
155
- format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
158
+ end
159
+
160
+ # Sign up methods
161
+ def check_access_code
162
+ if GlobalConfig.require_access_code
163
+ access_code, valid_code = AccessCode.valid_code?(params[:user][:access_code_code])
164
+ if valid_code
165
+ @user.access_code = access_code
166
+ else
167
+ flash[:notice] = translate('muck.users.access_required_warning')
168
+ raise Exceptions::InvalidAccessCode
169
+ end
156
170
  end
157
171
  end
158
- end
159
172
 
160
- # Sign up methods
161
- def check_recaptcha
162
- if GlobalConfig.use_recaptcha
163
- if !(verify_recaptcha(@user) && @user.valid?)
164
- raise ActiveRecord::RecordInvalid, @user
173
+ def check_recaptcha
174
+ if GlobalConfig.use_recaptcha
175
+ if !(verify_recaptcha(@user) && @user.valid?)
176
+ raise ActiveRecord::RecordInvalid, @user
177
+ end
165
178
  end
166
179
  end
167
- end
168
180
 
169
- def setup_user
170
- if GlobalConfig.automatically_activate
171
- if GlobalConfig.automatically_login_after_account_create
172
- setup_user_login
181
+ def setup_user
182
+ if GlobalConfig.automatically_activate
183
+ if GlobalConfig.automatically_login_after_account_create
184
+ setup_user_login
185
+ else
186
+ setup_user_no_login
187
+ end
173
188
  else
174
- setup_user_no_login
189
+ setup_user_no_activate
175
190
  end
176
- else
177
- setup_user_no_activate
178
191
  end
179
- end
180
192
 
181
- def setup_user_login
182
- path = ''
183
- success = false
184
- if @user.save
185
- @user.activate!
186
- UserSession.create(@user)
187
- send_welcome_email
188
- flash[:notice] = t('muck.users.thanks_sign_up')
189
- success = true
190
- path = signup_complete_path(@user)
191
- else
193
+ def setup_user_login
194
+ path = ''
192
195
  success = false
196
+ if @user.save
197
+ @user.activate!
198
+ UserSession.create(@user)
199
+ send_welcome_email
200
+ flash[:notice] = t('muck.users.thanks_sign_up')
201
+ success = true
202
+ path = signup_complete_path(@user)
203
+ else
204
+ success = false
205
+ end
206
+ [success, path]
193
207
  end
194
- [success, path]
195
- end
196
208
 
197
- def setup_user_no_login
198
- path = ''
199
- success = false
200
- if @user.save_without_session_maintenance
201
- @user.activate!
202
- send_welcome_email
203
- flash[:notice] = t('muck.users.thanks_sign_up_login')
204
- success = true
205
- path = signup_complete_login_required_path(@user)
206
- else
209
+ def setup_user_no_login
210
+ path = ''
207
211
  success = false
212
+ if @user.save_without_session_maintenance
213
+ @user.activate!
214
+ send_welcome_email
215
+ flash[:notice] = t('muck.users.thanks_sign_up_login')
216
+ success = true
217
+ path = signup_complete_login_required_path(@user)
218
+ else
219
+ success = false
220
+ end
221
+ [success, path]
208
222
  end
209
- [success, path]
210
- end
211
223
 
212
- def setup_user_no_activate
213
- path = ''
214
- success = false
215
- if @user.save_without_session_maintenance
216
- @user.deliver_activation_instructions!
217
- flash[:notice] = t('muck.users.thanks_sign_up_check')
218
- success = true
219
- path = signup_complete_activation_required_path(@user)
220
- else
224
+ def setup_user_no_activate
225
+ path = ''
221
226
  success = false
227
+ if @user.save_without_session_maintenance
228
+ @user.deliver_activation_instructions!
229
+ flash[:notice] = t('muck.users.thanks_sign_up_check')
230
+ success = true
231
+ path = signup_complete_activation_required_path(@user)
232
+ else
233
+ success = false
234
+ end
235
+ [success, path]
222
236
  end
223
- [success, path]
224
- end
225
237
 
226
- def send_welcome_email
227
- begin
228
- @user.deliver_welcome_email
229
- rescue Net::SMTPAuthenticationError => ex
230
- # TODO figure out what to do when email fails
231
- # @user.no_welcome_email =
238
+ def send_welcome_email
239
+ begin
240
+ @user.deliver_welcome_email
241
+ rescue Net::SMTPAuthenticationError => ex
242
+ # TODO figure out what to do when email fails
243
+ # @user.no_welcome_email =
244
+ end
232
245
  end
233
- end
234
246
 
235
- # override redirect by adding :redirect_to as a hidden field in your form or as a url param
236
- def after_update_response(success)
237
- if success
238
- respond_to do |format|
239
- format.html do
240
- get_redirect_to do
241
- redirect_to admin? ? public_user_path(@user) : user_path(@user)
247
+ # override redirect by adding :redirect_to as a hidden field in your form or as a url param
248
+ def after_update_response(success)
249
+ if success
250
+ respond_to do |format|
251
+ format.html do
252
+ get_redirect_to do
253
+ redirect_to admin? ? public_user_path(@user) : user_path(@user)
254
+ end
242
255
  end
256
+ format.xml{ head :ok }
257
+ end
258
+ else
259
+ respond_to do |format|
260
+ format.html { render :template => 'users/edit' }
261
+ format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
243
262
  end
244
- format.xml{ head :ok }
245
- end
246
- else
247
- respond_to do |format|
248
- format.html { render :template => 'users/edit' }
249
- format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
250
263
  end
251
264
  end
252
- end
253
265
 
254
- # override redirect by adding :redirect_to as a hidden field in your form or as a url param
255
- def after_destroy_response
256
- respond_to do |format|
257
- format.html do
258
- flash[:notice] = t('muck.users.login_out_success')
259
- get_redirect_to do
260
- redirect_to(login_url)
266
+ # override redirect by adding :redirect_to as a hidden field in your form or as a url param
267
+ def after_destroy_response
268
+ respond_to do |format|
269
+ format.html do
270
+ flash[:notice] = t('muck.users.login_out_success')
271
+ get_redirect_to do
272
+ redirect_to(login_url)
273
+ end
261
274
  end
275
+ format.xml { head :ok }
262
276
  end
263
- format.xml { head :ok }
264
277
  end
265
- end
266
278
 
267
- def permission_denied
268
- flash[:notice] = t('muck.users.permission_denied')
269
- respond_to do |format|
270
- format.html do
271
- redirect_to user_path(current_user)
279
+ def permission_denied
280
+ flash[:notice] = t('muck.users.permission_denied')
281
+ respond_to do |format|
282
+ format.html do
283
+ redirect_to user_path(current_user)
284
+ end
272
285
  end
273
286
  end
274
- end
275
287
 
276
288
  end