public ActionResult DissociateRole(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var user = db.Users.Find(id); if (user == null) { return(HttpNotFound()); } var context = new ESportsEventsContext(); var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context)); var allRoles = roleManager.Roles.ToList(); var associatedRoles = user.Roles.Select(r => allRoles.FirstOrDefault(ar => ar.Id == r.RoleId).Name); if (!associatedRoles.Any()) { return(this.RedirectToAction("Index", "Users")); } var model = new DissociateRoleBindingModel { AssociatedRoles = associatedRoles, Id = id, Username = user.UserName }; return(this.View(model)); }
public async Task <ActionResult> DissociateRole([Bind(Include = "Id, RoleToRemove, Username")] DissociateRoleBindingModel bind) { if (bind.Id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var user = db.Users.Find(bind.Id); if (ModelState.IsValid) { var userManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>(); if (string.IsNullOrEmpty(bind.RoleToRemove)) { this.ModelState.AddModelError("role", "There are no more roles to be removed"); var context = new ESportsEventsContext(); var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context)); var allRoles = roleManager.Roles.ToList(); var AssociatedRoles = user.Roles.Select(r => allRoles.FirstOrDefault(ar => ar.Id == r.RoleId).Name); bind.AssociatedRoles = AssociatedRoles; //bind.Username = user.UserName; return(this.View(bind)); } var result = await userManager.RemoveFromRoleAsync(user.Id, bind.RoleToRemove); foreach (var @event in user.AdministratedEvents) { @event.EventAdmins.Remove(user); } this.db.SaveChanges(); if (User.Identity.GetUserId() == user.Id) { await this.SignInAsync(user, true); } //userManager.Update(user); if (result == IdentityResult.Failed()) { this.ModelState.AddModelError("role", "This user can not be dissociated this role"); var context = new ESportsEventsContext(); var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context)); var allRoles = roleManager.Roles.ToList(); var AssociatedRoles = user.Roles.Select(r => allRoles.FirstOrDefault(ar => ar.Id == r.RoleId).Name); bind.AssociatedRoles = AssociatedRoles; //bind.Username = user.UserName; return(this.View(bind)); } return(this.RedirectToAction("DissociateRole", "Users")); } return(this.View()); }