public async Task <ActionResult> AddRoleToUser(RolesAndUsersDropDownViewModel model) { if (!ModelState.IsValid) { return(View(GetRolesAndUsersForDropDownList())); } var user = await UserManager.FindByNameAsync(model.SelectedUserName); var role = await RoleManager.FindByNameAsync(model.SelectedRoleName); if (user == null) { ModelState.AddModelError("", "User not found"); return(View(GetRolesAndUsersForDropDownList())); } if (role == null) { ModelState.AddModelError("", "Role not found"); return(View(GetRolesAndUsersForDropDownList())); } if (UserManager.IsInRole(user.Id, model.SelectedRoleName)) { ModelState.AddModelError("", "This user already has the role specified !"); return(View(GetRolesAndUsersForDropDownList())); } await UserManager.AddToRoleAsync(user.Id, role.Name); if (User.Identity.GetUserId() == user.Id) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); } return(RedirectToAction("Index", new RolesAndUsersDropDownViewModel { SelectedUserName = model.SelectedUserName })); }
private RolesAndUsersDropDownViewModel GetRolesAndUsersForDropDownList() { var roles = RoleManager.Roles.ToList(); var users = UserManager.Users.ToList(); var rolesAndUsers = new RolesAndUsersDropDownViewModel() { Roles = roles.Select(s => new SelectListItem { Value = s.Name, Text = s.Name }), Users = users.Select(s => new SelectListItem { Value = s.UserName, Text = s.UserName }) }; return(rolesAndUsers); }