@@ -116,40 +116,51 class UsersController < ApplicationController | |||
|
116 | 116 | @notification_options = @user.valid_notification_options |
|
117 | 117 | @notification_option = @user.mail_notification |
|
118 | 118 | |
|
119 | if request.post? | |
|
120 | @user.admin = params[:user][:admin] if params[:user][:admin] | |
|
121 | @user.login = params[:user][:login] if params[:user][:login] | |
|
122 | if params[:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?) | |
|
123 | @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] | |
|
124 | end | |
|
125 | @user.group_ids = params[:user][:group_ids] if params[:user][:group_ids] | |
|
126 | @user.attributes = params[:user] | |
|
127 | # Was the account actived ? (do it before User#save clears the change) | |
|
128 | was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE]) | |
|
129 | # TODO: Similar to My#account | |
|
130 | @user.mail_notification = params[:notification_option] || 'only_my_events' | |
|
131 | @user.pref.attributes = params[:pref] | |
|
132 | @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') | |
|
133 | ||
|
134 | if @user.save | |
|
135 | @user.pref.save | |
|
136 | @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : []) | |
|
137 | ||
|
138 | if was_activated | |
|
139 | Mailer.deliver_account_activated(@user) | |
|
140 | elsif @user.active? && params[:send_information] && !params[:password].blank? && @user.auth_source_id.nil? | |
|
141 | Mailer.deliver_account_information(@user, params[:password]) | |
|
142 | end | |
|
143 | flash[:notice] = l(:notice_successful_update) | |
|
144 | redirect_to :back | |
|
145 | end | |
|
146 | end | |
|
147 | 119 | @auth_sources = AuthSource.find(:all) |
|
148 | 120 | @membership ||= Member.new |
|
121 | end | |
|
122 | ||
|
123 | verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed } | |
|
124 | def update | |
|
125 | @user = User.find(params[:id]) | |
|
126 | @notification_options = @user.valid_notification_options | |
|
127 | @notification_option = @user.mail_notification | |
|
128 | ||
|
129 | @user.admin = params[:user][:admin] if params[:user][:admin] | |
|
130 | @user.login = params[:user][:login] if params[:user][:login] | |
|
131 | if params[:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?) | |
|
132 | @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] | |
|
133 | end | |
|
134 | @user.group_ids = params[:user][:group_ids] if params[:user][:group_ids] | |
|
135 | @user.attributes = params[:user] | |
|
136 | # Was the account actived ? (do it before User#save clears the change) | |
|
137 | was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE]) | |
|
138 | # TODO: Similar to My#account | |
|
139 | @user.mail_notification = params[:notification_option] || 'only_my_events' | |
|
140 | @user.pref.attributes = params[:pref] | |
|
141 | @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') | |
|
142 | ||
|
143 | if @user.save | |
|
144 | @user.pref.save | |
|
145 | @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : []) | |
|
146 | ||
|
147 | if was_activated | |
|
148 | Mailer.deliver_account_activated(@user) | |
|
149 | elsif @user.active? && params[:send_information] && !params[:password].blank? && @user.auth_source_id.nil? | |
|
150 | Mailer.deliver_account_information(@user, params[:password]) | |
|
151 | end | |
|
152 | flash[:notice] = l(:notice_successful_update) | |
|
153 | redirect_to :back | |
|
154 | else | |
|
155 | @auth_sources = AuthSource.find(:all) | |
|
156 | @membership ||= Member.new | |
|
157 | ||
|
158 | render :action => :edit | |
|
159 | end | |
|
149 | 160 | rescue ::ActionController::RedirectBackError |
|
150 | 161 | redirect_to :controller => 'users', :action => 'edit', :id => @user |
|
151 | 162 | end |
|
152 | ||
|
163 | ||
|
153 | 164 | def edit_membership |
|
154 | 165 | @user = User.find(params[:id]) |
|
155 | 166 | @membership = Member.edit_membership(params[:membership_id], params[:membership], @user) |
@@ -34,14 +34,14 module UsersHelper | |||
|
34 | 34 | end |
|
35 | 35 | |
|
36 | 36 | def change_status_link(user) |
|
37 |
url = {:controller => 'users', :action => ' |
|
|
37 | url = {:controller => 'users', :action => 'update', :id => user, :page => params[:page], :status => params[:status], :tab => nil} | |
|
38 | 38 | |
|
39 | 39 | if user.locked? |
|
40 |
link_to l(:button_unlock), url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :p |
|
|
40 | link_to l(:button_unlock), url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :put, :class => 'icon icon-unlock' | |
|
41 | 41 | elsif user.registered? |
|
42 |
link_to l(:button_activate), url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :p |
|
|
42 | link_to l(:button_activate), url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :put, :class => 'icon icon-unlock' | |
|
43 | 43 | elsif user != User.current |
|
44 |
link_to l(:button_lock), url.merge(:user => {:status => User::STATUS_LOCKED}), :method => :p |
|
|
44 | link_to l(:button_lock), url.merge(:user => {:status => User::STATUS_LOCKED}), :method => :put, :class => 'icon icon-lock' | |
|
45 | 45 | end |
|
46 | 46 | end |
|
47 | 47 |
@@ -1,4 +1,4 | |||
|
1 |
<% labelled_tabular_form_for :user, @user, :url => { :controller => 'users', :action => " |
|
|
1 | <% labelled_tabular_form_for :user, @user, :url => { :controller => 'users', :action => "update", :tab => nil }, :html => { :method => :put, :class => nil } do |f| %> | |
|
2 | 2 | <%= render :partial => 'form', :locals => { :f => f } %> |
|
3 | 3 | <% if @user.active? -%> |
|
4 | 4 | <p><label><%= check_box_tag 'send_information', 1, true %> <%= l(:label_send_information) %></label> |
@@ -1,4 +1,4 | |||
|
1 |
<% form_for(:user, :url => { :action => ' |
|
|
1 | <% form_for(:user, :url => { :action => 'update' }, :html => {:method => :put}) do %> | |
|
2 | 2 | <div class="box"> |
|
3 | 3 | <% Group.all.sort.each do |group| %> |
|
4 | 4 | <label><%= check_box_tag 'user[group_ids][]', group.id, @user.groups.include?(group) %> <%=h group %></label><br /> |
@@ -148,11 +148,11 ActionController::Routing::Routes.draw do |map| | |||
|
148 | 148 | end |
|
149 | 149 | users.with_options :conditions => {:method => :post} do |user_actions| |
|
150 | 150 | user_actions.connect 'users/new', :action => 'create' |
|
151 | user_actions.connect 'users/:id/edit', :action => 'edit' | |
|
152 | 151 | user_actions.connect 'users/:id/memberships', :action => 'edit_membership' |
|
153 | 152 | user_actions.connect 'users/:id/memberships/:membership_id', :action => 'edit_membership' |
|
154 | 153 | user_actions.connect 'users/:id/memberships/:membership_id/destroy', :action => 'destroy_membership' |
|
155 | 154 | end |
|
155 | users.connect 'users/:id/edit', :action => 'update', :conditions => {:method => :put} | |
|
156 | 156 | end |
|
157 | 157 | |
|
158 | 158 | # For nice "roadmap" in the url for the index action |
@@ -153,9 +153,9 class UsersControllerTest < ActionController::TestCase | |||
|
153 | 153 | |
|
154 | 154 | end |
|
155 | 155 | |
|
156 |
def test_ |
|
|
156 | def test_update | |
|
157 | 157 | ActionMailer::Base.deliveries.clear |
|
158 |
p |
|
|
158 | put :update, :id => 2, :user => {:firstname => 'Changed'}, :notification_option => 'all', :pref => {:hide_mail => '1', :comments_sorting => 'desc'} | |
|
159 | 159 | |
|
160 | 160 | user = User.find(2) |
|
161 | 161 | assert_equal 'Changed', user.firstname |
@@ -165,7 +165,7 class UsersControllerTest < ActionController::TestCase | |||
|
165 | 165 | assert ActionMailer::Base.deliveries.empty? |
|
166 | 166 | end |
|
167 | 167 | |
|
168 |
def test_ |
|
|
168 | def test_update_with_activation_should_send_a_notification | |
|
169 | 169 | u = User.new(:firstname => 'Foo', :lastname => 'Bar', :mail => 'foo.bar@somenet.foo', :language => 'fr') |
|
170 | 170 | u.login = 'foo' |
|
171 | 171 | u.status = User::STATUS_REGISTERED |
@@ -173,7 +173,7 class UsersControllerTest < ActionController::TestCase | |||
|
173 | 173 | ActionMailer::Base.deliveries.clear |
|
174 | 174 | Setting.bcc_recipients = '1' |
|
175 | 175 | |
|
176 |
p |
|
|
176 | put :update, :id => u.id, :user => {:status => User::STATUS_ACTIVE} | |
|
177 | 177 | assert u.reload.active? |
|
178 | 178 | mail = ActionMailer::Base.deliveries.last |
|
179 | 179 | assert_not_nil mail |
@@ -181,12 +181,12 class UsersControllerTest < ActionController::TestCase | |||
|
181 | 181 | assert mail.body.include?(ll('fr', :notice_account_activated)) |
|
182 | 182 | end |
|
183 | 183 | |
|
184 |
def test_ |
|
|
184 | def test_updat_with_password_change_should_send_a_notification | |
|
185 | 185 | ActionMailer::Base.deliveries.clear |
|
186 | 186 | Setting.bcc_recipients = '1' |
|
187 | 187 | |
|
188 | 188 | u = User.find(2) |
|
189 |
p |
|
|
189 | put :update, :id => u.id, :user => {}, :password => 'newpass', :password_confirmation => 'newpass', :send_information => '1' | |
|
190 | 190 | assert_equal User.hash_password('newpass'), u.reload.hashed_password |
|
191 | 191 | |
|
192 | 192 | mail = ActionMailer::Base.deliveries.last |
@@ -195,13 +195,13 class UsersControllerTest < ActionController::TestCase | |||
|
195 | 195 | assert mail.body.include?('newpass') |
|
196 | 196 | end |
|
197 | 197 | |
|
198 |
test " |
|
|
198 | test "put :update with a password change to an AuthSource user switching to Internal authentication" do | |
|
199 | 199 | # Configure as auth source |
|
200 | 200 | u = User.find(2) |
|
201 | 201 | u.auth_source = AuthSource.find(1) |
|
202 | 202 | u.save! |
|
203 | 203 | |
|
204 |
p |
|
|
204 | put :update, :id => u.id, :user => {:auth_source_id => ''}, :password => 'newpass', :password_confirmation => 'newpass' | |
|
205 | 205 | |
|
206 | 206 | assert_equal nil, u.reload.auth_source |
|
207 | 207 | assert_equal User.hash_password('newpass'), u.reload.hashed_password |
@@ -35,7 +35,7 class AdminTest < ActionController::IntegrationTest | |||
|
35 | 35 | assert_kind_of User, logged_user |
|
36 | 36 | assert_equal "Paul", logged_user.firstname |
|
37 | 37 | |
|
38 |
p |
|
|
38 | put "users/#{user.id}/edit", :id => user.id, :user => { :status => User::STATUS_LOCKED } | |
|
39 | 39 | assert_redirected_to "/users/#{ user.id }/edit" |
|
40 | 40 | locked_user = User.try_to_login("psmith", "psmith09") |
|
41 | 41 | assert_equal nil, locked_user |
@@ -251,10 +251,11 class RoutingTest < ActionController::IntegrationTest | |||
|
251 | 251 | should_route :get, "/users/222/edit/membership", :controller => 'users', :action => 'edit', :id => '222', :tab => 'membership' |
|
252 | 252 | |
|
253 | 253 | should_route :post, "/users/new", :controller => 'users', :action => 'create' |
|
254 | should_route :post, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444' | |
|
255 | 254 | should_route :post, "/users/123/memberships", :controller => 'users', :action => 'edit_membership', :id => '123' |
|
256 | 255 | should_route :post, "/users/123/memberships/55", :controller => 'users', :action => 'edit_membership', :id => '123', :membership_id => '55' |
|
257 | 256 | should_route :post, "/users/567/memberships/12/destroy", :controller => 'users', :action => 'destroy_membership', :id => '567', :membership_id => '12' |
|
257 | ||
|
258 | should_route :put, "/users/444/edit", :controller => 'users', :action => 'update', :id => '444' | |
|
258 | 259 | end |
|
259 | 260 | |
|
260 | 261 | # TODO: should they all be scoped under /projects/:project_id ? |
General Comments 0
You need to be logged in to leave comments.
Login now