public async Task <Response <ManageUserRolesDto> > ManageRolesAsync(string userId)
        {
            var user = await _userManager.GetUserByIdAsync(userId);

            if (user == null)
            {
                return(Response <ManageUserRolesDto> .Fail("No User Exists"));
            }
            var userRoles = await _userManager.GetRolesAsync(user);

            var allRoles = await _roleManager.Roles().ToListAsync();

            var allRolesDto = _mapper.Map <List <ManageRoleDto> >(allRoles);

            foreach (var roleDto in allRolesDto.Where(roleDto => userRoles.Contains(roleDto.Name)))
            {
                roleDto.Checked = true;
            }

            var manageUserRolesDto = new ManageUserRolesDto
            {
                UserId         = userId,
                UserName       = user.UserName,
                ManageRolesDto = allRolesDto
            };

            return(allRolesDto.Count > 0
                ? Response <ManageUserRolesDto> .Success(manageUserRolesDto, "Success")
                : Response <ManageUserRolesDto> .Fail("No roles found"));
        }
        public async Task <Response <UserIdentityDto> > ManageRolesAsync(ManageUserRolesDto manageUserRolesDto)
        {
            var user = await _userManager.GetUserByIdAsync(manageUserRolesDto.UserId);

            if (user == null)
            {
                return(Response <UserIdentityDto> .Fail("No user exists by this id"));
            }
            var existingRoles = await _userManager.GetRolesAsync(user);

            foreach (var roleDto in manageUserRolesDto.ManageRolesDto)
            {
                var roleExists = existingRoles.FirstOrDefault(x => x == roleDto.Name);
                switch (roleDto.Checked)
                {
                case true when roleExists == null:
                    await _userManager.AddToRoleAsync(user, roleDto.Name);

                    break;

                case false when roleExists != null:
                    await _userManager.RemoveFromRoleAsync(user, roleDto.Name);

                    break;
                }
            }
            return(Response <UserIdentityDto> .Success(new UserIdentityDto { Id = manageUserRolesDto.UserId }, "Succeeded"));
        }
Exemple #3
0
        public async Task <IActionResult> ManageUserRoles(ManageUserRolesDto manageUserRolesDto)
        {
            if (!ModelState.IsValid)
            {
                return(View(manageUserRolesDto));
            }
            var rs = await _userService.ManageRolesAsync(manageUserRolesDto);

            if (rs.Succeeded)
            {
                return(RedirectToAction("Index", "User", new { area = "Admin", id = rs.Data.Id, succeeded = rs.Succeeded, message = rs.Message }));
            }
            ModelState.AddModelError(string.Empty, rs.Message);
            return(View(manageUserRolesDto));
        }