public async Task <IEnumerable <string> > EditUserRoles(int userId, UserRolesListDto userRolesListDto) { var user = await userManager.FindByIdAsync(userId.ToString()); var userRoles = await userManager.GetRolesAsync(user); var selectedRoles = userRolesListDto.RoleNames; selectedRoles = selectedRoles ?? new string[] { }; var result = await userManager.AddToRolesAsync(user, selectedRoles.Except(userRoles)); if (!result.Succeeded) { throw new OperationException("Failed to add the roles."); } result = await userManager.RemoveFromRolesAsync(user, userRoles.Except(selectedRoles)); if (!result.Succeeded) { throw new OperationException("Failed to remove the roles."); } return(await userManager.GetRolesAsync(user)); }
public async Task <IActionResult> EditRoles(int userId, UserRolesListDto userRolesListDto) { try { return(Ok(await adminRepository.EditUserRoles(userId, userRolesListDto))); } catch (OperationException e) { return(BadRequest(e.Message)); } }