muck-users 0.2.23 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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