/// <summary> /// Adds permissions to a Role. /// </summary> public async Task <Role> AddPermissionsToRole(Role role, Guid[] permissionIds) { var permissionsToAdd = new List <Permission>(); foreach (var permissionId in permissionIds) { var permission = await _permissionStore.Get(permissionId); if (permission.Grain == role.Grain && permission.SecurableItem == role.SecurableItem && role.Permissions.All(p => p.Id != permission.Id)) { permissionsToAdd.Add(permission); } else { throw new IncompatiblePermissionException($"Permission with id {permission.Id} has the wrong grain, securableItem, or is already present on the role"); } } foreach (var permission in permissionsToAdd) { role.Permissions.Add(permission); } await _roleStore.Update(role); return(role); }
public async Task <Group> AddRoleToGroup(Group group, Role role) { group.Roles.Add(role); role.Groups.Add(group.Name); await _roleStore.Update(role); await Update(group); return(group); }
public async Task <Group> AddRoleToGroup(string groupName, Guid roleId) { var group = await _groupStore.Get(groupName); var role = await _roleStore.Get(roleId); if (group.Roles.All(r => r.Id != roleId)) { group.Roles.Add(role); } if (role.Groups.All(g => !string.Equals(g, groupName, StringComparison.OrdinalIgnoreCase))) { role.Groups.Add(groupName); } await _roleStore.Update(role); await _groupStore.Update(group); return(group); }
public async Task <Role> UpdateRole(Role role) { try { await _roleStore.Update(role); return(role); } catch (NotFoundException <Role> e) { throw new NotFoundException <Role>(e.Message); } }
public async Task <IActionResult> Edit( [FromRoute] string code, [FromBody] RoleUpdateForm form) { if (string.IsNullOrEmpty(code)) { throw new ArgumentNullException(nameof(code)); } if (!await RoleStore.IsExisting(code)) { return(NotFound()); } var validationResult = new RoleUpdateFormValidator( RoleStore, ResourceStore, DisplayNameRule, DescriptionRule) .Validate(form); validationResult.AddToModelState(this.ModelState, null); if (!validationResult.IsValid) { return(ValidationError()); } Role role = await RoleStore.Get(code); role.DisplayName = form.DisplayName; role.Description = form.Description; role.Permissions = form.Permissions; await RoleStore.Update(role); var view = Element <Role>(role); return(AcceptedAtAction(nameof(GetByCode), new { role.Code }, view)); }
public async Task Update(Role role) { await _roleStore.Update(role); }