Revision 615ff085
Added by Marek Hulán about 10 years ago
app/models/user.rb | ||
---|---|---|
end
|
||
|
||
def role_ids_with_change_detection=(roles)
|
||
roles ||= [] # in API, role_ids is converted to nil if user sent empty array
|
||
@role_ids_changed = roles.uniq.select(&:present?).map(&:to_i).sort != role_ids.sort
|
||
@role_ids_was = role_ids.clone
|
||
self.role_ids_without_change_detection = roles
|
test/unit/user_test.rb | ||
---|---|---|
assert_equal user.role_ids_was, [foobar.id, barfoo.id]
|
||
end
|
||
|
||
test "role_ids can be empty array which removes all roles" do
|
||
user = users(:one)
|
||
foobar = Role.find_or_create_by_name :name => "foobar"
|
||
barfoo = Role.find_or_create_by_name :name => "barfoo"
|
||
user.roles<< foobar
|
||
|
||
user.role_ids = []
|
||
assert_empty user.roles
|
||
end
|
||
|
||
test "role_ids can be nil resulting in no role" do
|
||
user = users(:one)
|
||
foobar = Role.find_or_create_by_name :name => "foobar"
|
||
barfoo = Role.find_or_create_by_name :name => "barfoo"
|
||
user.roles<< foobar
|
||
|
||
user.role_ids = nil
|
||
assert_empty user.roles
|
||
end
|
||
|
||
test "admin? detection for user admin flag" do
|
||
admin = FactoryGirl.build(:user, :admin => true)
|
||
assert admin.admin?, 'user admin flag was missed'
|
Also available in: Unified diff
Fixes #4537 - user can set empty roles array via API