public async Task <IActionResult> ManageClaims(UserCliamsViewModel model) { var user = await Usermanager.FindByIdAsync(model.userId); if (user == null) { ViewBag.ErrorMessage = $"User with Id = {model.userId} cannot be found"; return(View("NotFound")); } // Get all the user existing claims and delete them var claims = await Usermanager.GetClaimsAsync(user); var result = await Usermanager.RemoveClaimsAsync(user, claims); if (!result.Succeeded) { ModelState.AddModelError("", "Cannot remove user existing claims"); return(View(model)); } // Add all the claims that are selected on the UI result = await Usermanager.AddClaimsAsync(user, model.Claims.Select(c => new Claim(c.ClaimType, c.IsSelected ? "true" : "false"))); if (!result.Succeeded) { ModelState.AddModelError("", "Cannot add selected claims to user"); return(View(model)); } return(RedirectToAction("EditUser", new { id = model.userId })); }
public async Task <IActionResult> ManageClaims(string 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 UserCliamsViewModel() { userId = userId }; var existingUserClaims = await Usermanager.GetClaimsAsync(user); foreach (Claim claim in ClaimStore.claimstore) { UserClaims userclaim = new UserClaims() { ClaimType = claim.Type, Value = claim.Value }; // If the user has the claim, set IsSelected property to true, so the checkbox // next to the claim is checked on the UI if (existingUserClaims.Any(c => c.Type == claim.Type && c.Value == "true")) { userclaim.IsSelected = true; } model.Claims.Add(userclaim); } return(View(model)); }
public async Task <IActionResult> DeleteUser(string id) { var user = await Usermanager.FindByIdAsync(id); if (user == null) { ViewBag.ErrorMessage = $"User with Id = {id} cannot be found"; return(View("NotFound")); } else { if (await Usermanager.IsInRoleAsync(user, "Admin") || await Usermanager.IsInRoleAsync(user, "Employee")) { var claims = await Usermanager.GetClaimsAsync(user); var claimResult = await Usermanager.RemoveClaimsAsync(user, claims); if (!claimResult.Succeeded) { ModelState.AddModelError("", "Cannot remove user existing claims"); return(View("ListUsers")); } var roles = await Usermanager.GetRolesAsync(user); var RolesResult = await Usermanager.RemoveFromRolesAsync(user, roles); if (!RolesResult.Succeeded) { ModelState.AddModelError("", "Cannot remove user existing roles"); return(View("ListUsers")); } user.isactive = false; var result1 = await Usermanager.UpdateAsync(user); if (result1.Succeeded) { return(RedirectToAction("ListUsers")); } foreach (var error in result1.Errors) { ModelState.AddModelError("", error.Description); } return(View("ListUsers")); } var result = await Usermanager.DeleteAsync(user); if (result.Succeeded) { return(RedirectToAction("ListUsers")); } foreach (var error in result.Errors) { ModelState.AddModelError("", error.Description); } return(View("ListUsers")); } }
public async Task <IActionResult> GetUserById(string id) { var user = await Usermanager.FindByIdAsync(id); if (user != null) { RegisterEmployeeViewModel r = new RegisterEmployeeViewModel() { id = user.Id, FullName = user.FullName, Email = user.Email, City = util.getCities().FirstOrDefault(x => x.id == user.City).city, PhoneNumber = user.PhoneNumber, Photopath = user.Photopath, StreetAdress = user.StreetAdress, }; if (user.store_id != null) { r.store_id = (int)user.store_id; } if (User.IsInRole("Super Admin") || User.IsInRole("Admin")) { var userClaims = await Usermanager.GetClaimsAsync(user); var userRoles = await Usermanager.GetRolesAsync(user); if (user.store_id != null) { r.StoreName = util.GetAllStores().FirstOrDefault(x => x.store_id == user.store_id).StoreName; } r.addedBy = user.addedBy; foreach (var claim in userClaims) { UserClaim u = new UserClaim() { ClaimType = claim.Type, ClaimValue = claim.Value }; r.Claims.Add(u); } foreach (var role in userRoles) { UserRoles ro = new UserRoles() { RoleName = role }; r.Roles.Add(ro); } } return(View("~/Views/Home/Profile.cshtml", r)); } //not Found ViewBag.Name = "User"; return(View("ProductNotFound", id)); }
public async Task <IActionResult> EditUser(string id) { var user = await Usermanager.FindByIdAsync(id); if (user == null) { ViewBag.ErrorMessage = $"User with Id = {id} cannot be found"; return(View("NotFound")); } if (User.IsInRole("Admin")) { var LoginUser = await Usermanager.GetUserAsync(User); if (!User.HasClaim("Edit User", "true") && LoginUser.Id != id) { return(Forbid()); } } ViewBag.Stores = util.GetAllStores(); // GetClaimsAsync retunrs the list of user Claims var userClaims = await Usermanager.GetClaimsAsync(user); // GetRolesAsync returns the list of user Roles var userRoles = await Usermanager.GetRolesAsync(user); var model = new EditUserViewModel { Id = user.Id, Email = user.Email, FullName = user.FullName, cityId = user.City, PhoneNumber = user.PhoneNumber, StreetAdress = user.StreetAdress, store_id = user.store_id, Existingphotopath = user.Photopath, Claims = userClaims.Select(c => c.Type + ":" + c.Value).ToList(), Roles = userRoles }; ViewBag.cities = util.getCities(); return(View(model)); }