public ActionResult UserRoles(SelectUserRolesViewModel model) { if (ModelState.IsValid) { var idManager = new ApplicationDbContext.IdentityManager(); var Db = new ApplicationDbContext(); var user = Db.Users.First(u => u.UserName == model.UserName); idManager.ClearUserRoles(user.Id); foreach (var role in model.Roles) { if (role.Selected) { idManager.AddUserToRole(user.Id, role.RoleName); } } return(RedirectToAction("index")); } return(View()); }
private OperationResult EditUserRoles(UserViewModel model) { var operationResult = new OperationResult(); operationResult.Success = true; if (model.UserId != null) { var idManager = new ApplicationDbContext.IdentityManager(); var roles = model.Roles.OrderBy(x => x.RoleName).ToList(); foreach (var role in roles) { if (role.Selected) { if (!UserManager.IsInRole(model.UserId, role.RoleName)) { try { operationResult.Success = idManager.AddUserToRole(model.UserId, role.RoleName); if (!operationResult.Success) { operationResult.Message = "Error adding user to role " + role.RoleName; break; } } catch (Exception ex) { operationResult.Success = false; operationResult.Message = "Error adding user to role " + role.RoleName; logger.ErrorFormat("Error adding user to role " + role.RoleName + ": { 0} ", ex.ToString()); break; } } } else { if (UserManager.IsInRole(model.UserId, role.RoleName)) { try { var result = UserManager.RemoveFromRole(model.UserId, role.RoleName); if (!result.Succeeded) { operationResult.Success = false; operationResult.Message = "Error removing user from role " + role.RoleName; break; } else { operationResult.Success = true; } } catch (Exception ex) { operationResult.Success = false; operationResult.Message = "Error removing user from role " + role.RoleName; logger.ErrorFormat("Error removing user to role " + role.RoleName + ": { 0} ", ex.ToString()); break; } } } } } return(operationResult); }