public ActionResult AssociateRole(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var user = db.Users.Find(id); 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).ToList(); if (associatedRoles.Count == allRoles.Count) { return(this.RedirectToAction("Index", "Users")); } var model = new AssociateRoleBindingModel() { AssociatedRoles = associatedRoles, Id = user.Id, Username = user.UserName }; return(this.View(model)); }
public async Task <ActionResult> AssociateRole([Bind(Include = "Id, AddedRole, Username")] AssociateRoleBindingModel 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.AddedRole)) { this.ModelState.AddModelError("role", "There are no more roles to be added"); 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 = userManager.AddToRole(user.Id, bind.AddedRole); 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 assigned the given 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("AssociateRole", "Users")); } return(this.View()); }