public async Task <IActionResult> UpdateUserRoles(string email, RoleForUpdate roleForUpdate) { var userRoles = await this.repo.UpdateUserRole(email, roleForUpdate); if (userRoles.Count > 0) { return(Ok(userRoles)); } return(BadRequest("Unable to update roles")); }
public async Task <ICollection <string> > UpdateUserRole(string email, RoleForUpdate roleForUpdate) { var user = await this.userManager.FindByEmailAsync(email); //get roles var userRoles = await this.userManager.GetRolesAsync(user); var selectedRole = roleForUpdate.RoleNames; // selectedRole != null ? selectedROles : new string[] {}; selectedRole = selectedRole ?? new string[] { }; //add the roles to the user eexcept the one that already exist var result = await this.userManager.AddToRolesAsync(user, selectedRole.Except(userRoles)); if (result.Succeeded) { result = await this.userManager.RemoveFromRolesAsync(user, userRoles.Except(selectedRole)); return(await this.userManager.GetRolesAsync(user)); } return(new string[] { }); }