示例#1
0
        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());
        }
示例#2
0
        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());
        }