Revision 802ae177
Added by Amos Benari almost 11 years ago
- ID 802ae177dc9d35c3fc3889fa34b24e7f32001eb8
app/controllers/users_controller.rb | ||
---|---|---|
end
|
||
|
||
def update
|
||
admin = params[:user].delete :admin
|
||
# Remove keys for restricted variables when the user is editing their own account
|
||
if editing_self
|
||
for key in params[:user].keys
|
||
... | ... | |
User.current.editing_self = true
|
||
end
|
||
|
||
# Only an admin can update admin attribute of another use
|
||
# Only an admin can update admin attribute of another user
|
||
# this is required, as the admin field is blacklisted above
|
||
if User.current.admin
|
||
@user.admin = admin
|
||
return process_error unless @user.valid?
|
||
end
|
||
admin = params[:user].delete :admin
|
||
@user.admin = admin if User.current.admin
|
||
|
||
if @user.update_attributes(params[:user])
|
||
@user.roles << Role.find_by_name("Anonymous") unless @user.roles.map(&:name).include? "Anonymous"
|
test/functional/users_controller_test.rb | ||
---|---|---|
|
||
test "should create regular user" do
|
||
post :create, {
|
||
:commit => "Submit",
|
||
:user => {
|
||
:login => "foo",
|
||
:mail => "foo@bar.com",
|
||
... | ... | |
|
||
test "should create admin user" do
|
||
post :create, {
|
||
:commit => "Submit",
|
||
:user => {
|
||
:login => "foo",
|
||
:admin => true,
|
||
... | ... | |
test "should update user" do
|
||
user = User.create :login => "foo", :mail => "foo@bar.com", :auth_source => auth_sources(:one)
|
||
|
||
put :update, { :commit => "Submit", :id => user.id, :user => {:login => "johnsmith"} }, set_session_user
|
||
put :update, { :id => user.id, :user => {:login => "johnsmith"} }, set_session_user
|
||
mod_user = User.find_by_id(user.id)
|
||
|
||
assert mod_user.login == "johnsmith"
|
||
... | ... | |
|
||
assert user.roles =([roles(:anonymous)])
|
||
|
||
put :update, { :commit => "Submit", :id => user.id, :user => {:login => "johnsmith"} }, set_session_user
|
||
put :update, { :id => user.id, :user => {:login => "johnsmith"} }, set_session_user
|
||
mod_user = User.find_by_id(user.id)
|
||
|
||
assert mod_user.roles =([roles(:anonymous)])
|
||
... | ... | |
user.password = "changeme"
|
||
assert user.save
|
||
|
||
put :update, {:commit => "Submit", :id => user.id,
|
||
put :update, {:id => user.id,
|
||
:user => {
|
||
:login => "johnsmith", :password => "dummy", :password_confirmation => "dummy"
|
||
},
|
||
... | ... | |
user.password = "changeme"
|
||
assert user.save
|
||
|
||
put :update, {:commit => "Submit", :id => user.id,
|
||
put :update, {:id => user.id,
|
||
:user => {
|
||
:login => "johnsmith", :password => "dummy", :password_confirmation => "DUMMY"
|
||
},
|
||
... | ... | |
user.password = "changeme"
|
||
assert user.save
|
||
|
||
put :update, {:commit => "Submit", :id => user.id,
|
||
put :update, {:id => user.id,
|
||
:user => { :login => "foobar" },
|
||
}, set_session_user
|
||
|
||
... | ... | |
|
||
test "should modify session when locale is updated" do
|
||
User.current = User.admin
|
||
put :update, {:commit => "Submit", :id => User.admin.id, :user => { :locale => "cs" } }, set_session_user
|
||
put :update, {:id => User.admin.id, :user => { :locale => "cs" } }, set_session_user
|
||
assert_redirected_to users_url
|
||
assert User.admin.locale == "cs"
|
||
put :update, {:commit => "Submit", :id => User.admin.id, :user => { :locale => "" } }, set_session_user
|
||
put :update, { :id => User.admin.id, :user => { :locale => "" } }, set_session_user
|
||
assert User.admin.locale.nil?
|
||
assert session[:locale].nil?
|
||
end
|
||
... | ... | |
|
||
update_hash = {"user"=>{ "login" => sample_user.login,
|
||
"hostgroup_ids" => ["", Hostgroup.find_by_name("root").id.to_s] },
|
||
"commit" => "Submit",
|
||
"id" => sample_user.id }
|
||
|
||
put :update, update_hash , set_session_user
|
||
... | ... | |
update_hash = {"user"=>{
|
||
"login" => target.login,
|
||
"admin" => false},
|
||
"commit" => "Submit",
|
||
"id" => target.id}
|
||
put :update, update_hash, set_session_user.merge(:user => user.id)
|
||
|
||
... | ... | |
assert_template :edit
|
||
end
|
||
|
||
test "should be able to create user without mail and update the mail later" do
|
||
user = User.create :login => "mailess", :mail=> nil, :auth_source => auth_sources(:one)
|
||
user.admin = true
|
||
user.save!(:validate => false)
|
||
|
||
update_hash = {"user"=>{
|
||
"login" => user.login,
|
||
"mail" => "you@have.mail"},
|
||
"id" => user.id}
|
||
put :update, update_hash, set_session_user.merge(:user => user.id)
|
||
|
||
assert !User.find_by_login(user.login).mail.blank?
|
||
end
|
||
|
||
end
|
Also available in: Unified diff
fixes #2639 After creating user with empty e-mail it becomes impossible to add it.