public async Task <ActionResult> AddUser([Bind(Include = "FirstName,LastName,LoginEmail,LoginPassword,ConfirmPassword,PrivacyLevel,UserRole")] UserAdminAddUserView model) { if (Request.Form["resetbutton"] != null) { return(RedirectToAction("AddUser")); } if (ModelState.IsValid) { //Create a new AppUser AppUser appUser = AppUserHelpers.CreateAppUser(db, model, User); var user = new ApplicationUser { UserName = model.LoginEmail, Email = model.LoginEmail, AppUserId = appUser.AppUserId, CurrentUserRole = appUser.UserRole }; var result = await UserManager.CreateAsync(user, model.LoginPassword); if (result.Succeeded) { if (Request.Form["adduserbutton"] != null) { return(RedirectToAction("AddUser")); } return(RedirectToAction("UserAdmin")); } //Delete the appUser account as this has not gone through AppUserHelpers.DeleteAppUser(db, appUser.AppUserId); AddErrors(result); } // If we got this far, something failed, redisplay form return(View(model)); }
public static AppUser CreateAppUser(ApplicationDbContext db, UserAdminAddUserView view, IPrincipal user) { AppUser appUser = new AppUser() { AppUserId = Guid.NewGuid(), FirstName = view.FirstName, LastName = view.LastName, EntityStatus = EntityStatusEnum.PasswordResetRequired, OrganisationId = GetOrganisationIdFromUser(db, user), LoginEmail = view.LoginEmail, PrivacyLevel = view.PrivacyLevel, UserRole = view.UserRole, RecordChange = RecordChangeEnum.NewRecord, RecordChangeBy = GetAppUserIdFromUser(user), RecordChangeOn = DateTime.Now }; db.AppUsers.Add(appUser); db.SaveChanges(); return(appUser); }