public async Task <IActionResult> AddUserRole([FromRoute] string userId, [FromRoute] string roleId) { var user = await _userManager.FindByIdAsync(userId); if (user == null) { return(NotFound()); } var role = await _roleManager.FindByIdAsync(roleId); if (role == null) { return(NotFound()); } if (await _userManager.IsInRoleAsync(user, role.Name)) { return(BadRequest(new ValidationProblemDetails(new Dictionary <string, string[]> { { $"{nameof(roleId)}", new[] { $"User {user.Email} is already a member of role {role.Name}." } } }))); } var result = await _userManager.AddToRoleAsync(user, role.Name); if (!result.Succeeded) { return(BadRequest(result.Errors.ToValidationProblemDetails())); } if (role.IsManagementRole()) { var clientId = User.FindFirst(JwtClaimTypes.ClientId); await _persistedGrantService.RemoveAllGrantsAsync(userId, clientId?.Value); } return(NoContent()); }
public async Task <IActionResult> AddUserRole([FromRoute] string userId, [FromRoute] string roleId) { var user = await _userManager.FindByIdAsync(userId); if (user == null) { return(NotFound()); } var role = await _roleManager.FindByIdAsync(roleId); if (role == null) { return(NotFound()); } if (await _userManager.IsInRoleAsync(user, role.Name)) { return(BadRequest(new ValidationProblemDetails(new Dictionary <string, string[]> { { $"{nameof(roleId)}", new[] { $"User {user.Email} is already a member of role {role.Name}." } } }))); } await _userManager.AddToRoleAsync(user, role.Name); return(NoContent()); }