public async Task <ActionResult> CreateUser(UserCreateView model) { if (model.ConfirmPassword != model.Password) { return(View(GetUserView(model))); } SDHCUser user = Activator.CreateInstance(SDHCUserManager.BaseUser) as SDHCUser; var m = user.ConvertUserToPost(); m.Properties = model.Properties; var mu = m.ConvertPostToUser(user); if (G.UserNameIsNotEmail) { user.UserName = model.UserName; } else { user.UserName = model.Email; } user.Email = model.Email; var result = await userManager.CreateAsync(user, model.Password); if (!result.Succeeded) { return(View(GetUserView(model))); } await setRolesForUser(user, model.SelectedRoles); return(RedirectToAction("Index", "Roles", new { @area = G.AdminPath })); }
private async Task setRolesForUser(SDHCUser user, IEnumerable <string> selectedRoles) { try { var userRoles = user.Roles.Select(b => b.RoleId).ToList(); var userRemoveRoles = userRoles.Where(b => !selectedRoles.Contains(b)).ToList(); var userAddRoles = selectedRoles.Where(b => !userRoles.Contains(b)).ToList(); if (userRemoveRoles.Count > 0 || userAddRoles.Count > 0) { var allRoles = G.RoleManager().Roles.ToList(); var removeRoleName = allRoles.Where(b => userRemoveRoles.Contains(b.Id)).Select(b => b.Name).ToArray(); var addRoleName = allRoles.Where(b => userAddRoles.Contains(b.Id)).Select(b => b.Name).ToArray(); await G.UserManager().RemoveFromRolesAsync(user.Id, removeRoleName); await G.UserManager().AddToRolesAsync(user.Id, addRoleName); } } catch { } }