auth: refactor updateRole

We will return error if revoke or grant fails to update the role.
No need to check if revoke or grant is nil or not.
release-2.1
Xiang Li 2015-06-22 15:16:07 -07:00
parent 462baedcd4
commit 979f531261
1 changed files with 4 additions and 7 deletions

View File

@ -353,15 +353,12 @@ func (s *Store) UpdateRole(role Role) (Role, error) {
} }
return old, err return old, err
} }
newRole, err := old.Merge(role) newRole, err := old.merge(role)
if err != nil { if err != nil {
return old, err return old, err
} }
if reflect.DeepEqual(old, newRole) { if reflect.DeepEqual(old, newRole) {
if role.Revoke != nil || role.Grant != nil { return old, authErr(http.StatusBadRequest, "Role not updated. Use grant/revoke to update the role.")
return old, authErr(http.StatusConflict, "Role not updated. Grant/Revoke lists didn't match any current permissions.")
}
return old, authErr(http.StatusBadRequest, "Role not updated. Use Grant/Revoke to update the role.")
} }
_, err = s.updateResource("/roles/"+role.Role, newRole) _, err = s.updateResource("/roles/"+role.Role, newRole)
if err == nil { if err == nil {
@ -456,9 +453,9 @@ func (u User) CheckPassword(password string) bool {
return err == nil return err == nil
} }
// Merge for a role works the same as User above -- atomic Role application to // merge for a role works the same as User above -- atomic Role application to
// each of the substructures. // each of the substructures.
func (r Role) Merge(n Role) (Role, error) { func (r Role) merge(n Role) (Role, error) {
var out Role var out Role
var err error var err error
if r.Role != n.Role { if r.Role != n.Role {