public async Task <IActionResult> ManageUserRoles(string userId) { ViewBag.userID = userId; var user = await _userManager.FindByIdAsync(userId); if (user == null) { ViewBag.ErrorMessage = $"User with Id = {userId} cannot be found"; return(View("NotFound")); } var model = new List <RolesInUserModel>(); foreach (var role in _roleManager.Roles) { var rolesInUserView = new RolesInUserModel { RoleId = role.Id, RoleName = role.Name }; if (await _userManager.IsInRoleAsync(user, role.Name)) { rolesInUserView.IsSelected = true; } else { rolesInUserView.IsSelected = false; } model.Add(rolesInUserView); } return(View(model)); }
public async Task <IHttpActionResult> ManageRolesInUser([FromBody] RolesInUserModel model) { DbResult _dbResult = new DbResult(); var user = await this.UserManager.FindByNameAsync(model.Username); if (user == null) { _dbResult = new DbResult { IsDbSuccess = false, DbMessage = "User does not exist" }; } else { IdentityResult result = new IdentityResult(); foreach (var role in model.AddRoles) { if (!this.UserManager.IsInRole(user.Id, role)) { result = await this.UserManager.AddToRolesAsync(user.Id, role); } } if (result.Succeeded) { result = await this.UserManager.RemoveFromRolesAsync(user.Id, model.RemoveRoles); } if (result.Succeeded) { _dbResult = new DbResult { IsDbSuccess = true, DbMessage = "Roles assigned to user successfully" }; } else { _dbResult = new DbResult { IsDbSuccess = false, DbMessage = result.Errors.SingleOrDefault() }; } } return(Ok(_dbResult)); }
public async Task <IActionResult> ManageRolesInUser(string id, RolesInUserModel rolesInUser) { var user = await _userManager.FindByIdAsync(id); if (user == null) { return(NotFound()); } foreach (var roleId in rolesInUser.EnrolledRoles) { var role = await _roleManager.FindByIdAsync(roleId); if (role == null) { continue; } bool isInRole = await _userManager.IsInRoleAsync(user, role.Name); if (!isInRole) { await _userManager.AddToRoleAsync(user, role.Name); } } foreach (var roleId in rolesInUser.RemovedRoles) { var role = await _roleManager.FindByIdAsync(roleId); if (role == null) { continue; } bool isInRole = await _userManager.IsInRoleAsync(user, role.Name); if (isInRole) { await _userManager.RemoveFromRoleAsync(user, role.Name); } } return(Ok()); }
public async Task <IHttpActionResult> AssignRolesToUser(RolesInUserModel model) { var appUser = await this.AppUserManager.FindByIdAsync(model.Id); if (appUser == null) { return(NotFound()); } var currentRoles = await this.AppUserManager.GetRolesAsync(appUser.Id); var rolesNotExists = model.RolesToAssign.Except(this.AppRoleManager.Roles.Select(x => x.Name)).ToArray(); if (rolesNotExists.Count() > 0) { ModelState.AddModelError("", string.Format("Roles '{0}' does not exixts in the system", string.Join(",", rolesNotExists))); return(BadRequest(ModelState)); } IdentityResult removeResult = await this.AppUserManager.RemoveFromRolesAsync(appUser.Id, currentRoles.ToArray()); if (!removeResult.Succeeded) { ModelState.AddModelError("", "Failed to remove user roles"); return(BadRequest(ModelState)); } IdentityResult addResult = await this.AppUserManager.AddToRolesAsync(appUser.Id, model.RolesToAssign.ToArray()); if (!addResult.Succeeded) { ModelState.AddModelError("", "Failed to add user roles"); return(BadRequest(ModelState)); } return(Ok("'" + model.Id + "'")); }