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")); }
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)); }