public async Task <ActionResult <User> > SetUserRole([FromForm] RoleChangeModel model) { User user = await _userManager.FindByIdAsync(model.UserId); if (user == null) { throw new RoleChangeException($"Cannot find user with Id: {model.UserId}"); } if (_roleManager.FindByNameAsync(model.Role).Result == null) { throw new RoleChangeException($"Role does not exist: {model.Role}"); } try { var userRole = await _userManager.GetRolesAsync(user); if (userRole.FirstOrDefault() != model.Role) { await _userManager.AddToRoleAsync(user, model.Role); await _userManager.RemoveFromRolesAsync(user, userRole); } } catch (Exception ex) { throw new RoleChangeException(ex.Message); } return(Ok(user)); }
public async Task <JsonResult> UsersSettingsAsync([FromBody] RoleChangeModel model) { if (User.Claims.FirstOrDefault(c => c.Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/role").Value != "Admin") { return(Json(false)); } var query = new ChangeClaimCommand { UserId = model.UserId, ClaimValue = model.Role }; var resultClaim = await _mediator.Send(query); if (resultClaim.Suceeded) { return(Json(true)); } else { return(Json(false)); } }