public async Task <ActionResult> RegisterUser(RegisterViewModel model) { if (ModelState.IsValid) { // check to see if this user is in the existing database LogicLayer.UserManager usrMgr = new LogicLayer.UserManager(); try { if (usrMgr.FindUser(model.Email)) { var oldUser = usrMgr.AuthenticateUser(model.Email, model.Password); var user = new ApplicationUser { GivenName = model.GivenName, FamilyName = model.FamilyName, UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { string role = oldUser.Role; UserManager.AddToRole(user.Id, role); // await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); return(RedirectToAction("Index", "Admin")); } AddErrors(result); } else // not an existing user, create a user without roles { var user = new ApplicationUser { GivenName = model.GivenName, FamilyName = model.FamilyName, UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { // await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); return(RedirectToAction("Index", "Admin")); } AddErrors(result); } } catch { // creating old user failed return(View(model)); } } // modelstate was not valid return(View(model)); }
public async Task <ActionResult> RegisterEmployeeUser(RegisterEmployeeViewModel model) { if (ModelState.IsValid) { // Check to see if this user is in the existing database LogicLayer.UserManager usrMgr = new LogicLayer.UserManager(); try { if (usrMgr.FindUser(model.Email)) { // If this user already exists, we need to use the regular Register method return(RedirectToAction("Register", "Account")); } // Not an existing user, create a DataObjects.User without roles else { var employee = new DataObjects.User() { // These fields are need by sp_insert_user Email = model.Email, FirstName = model.GivenName, LastName = model.FamilyName, PhoneNumber = model.PhoneNumber, }; // Add the DataObjects.User to Employe table if (usrMgr.AddUser(employee)) { var employeeID = usrMgr.RetrieveUserIDFromEmail(model.Email); var user = new ApplicationUser() { EmployeeID = employeeID, GivenName = model.GivenName, FamilyName = model.FamilyName, UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, "newuser"); if (result.Succeeded) { return(RedirectToAction("Index", "Admin")); } AddErrors(result); } } } catch { // Creating Employee Failed return(View(model)); } } // ModelState was not valid return(View(model)); }
public async Task <ActionResult> RegisterEmployeeUser(RegisterEmployeeViewModel model) { if (ModelState.IsValid) { // check to see if the user is in the existing database LogicLayer.UserManager usrMgr = new LogicLayer.UserManager(); try { if (usrMgr.FindUser(model.Email)) { // if the user already exists, we need to use the regular Register method return(RedirectToAction("Register", "Account")); } else // not an existing user, create a DataObjects.User without any roles { var employee = new DataObjects.User() { // these fields are needed by sp_insert_user Email = model.Email, FirstName = model.GivenName, LastName = model.FamilyName, PhoneNumber = model.PhoneNumber }; if (usrMgr.CreateEmployee(employee.FirstName, employee.LastName, employee.PhoneNumber, employee.Email)) // add the DataObjects.User to Employee table { var employeeID = usrMgr.RetrieveUserIdFromEmail(model.Email); var user = new ApplicationUser // if it worked, create an Identity user { EmployeeID = employeeID, GivenName = model.GivenName, FamilyName = model.FamilyName, UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, "newuser"); if (result.Succeeded) // go back to Admin/Index View { return(RedirectToAction("Index", "Admin")); } AddErrors(result); } } } catch { // creating employee failed return(View(model)); } } // modelstate was not valid return(View(model)); }
public async Task <ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { // check to see if this user is in the existing database LogicLayer.UserManager usrMgr = new LogicLayer.UserManager(); try { if (usrMgr.FindUser(model.Email)) { // this requires the user to use the same password as the one in the internal database var oldUser = usrMgr.AuthenticateUser(model.Email, model.Password); var user = new ApplicationUser { // populate these fields with wxisting data from oldUser GivenName = oldUser.FirstName, FamilyName = oldUser.LastName, PersonID = oldUser.PersonID, // populate these fields normally UserName = model.Email, Email = model.Email }; // create the user with the Identity system UserManager normally var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { // use the oldUser.Roles list to add the internally assigned roles to the user foreach (var role in oldUser.Roles) { UserManager.AddToRole(user.Id, role); } await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); return(RedirectToAction("Index", "Home")); } AddErrors(result); } else // not an existing user, create a user withou { var user = new ApplicationUser { // We will uncomment the following two lines later, once our ViewModel and // our View are updated to ask for them: GivenName = model.GivenName, FamilyName = model.FamilyName, UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { // my code var dbUser = new DataObjects.User { FirstName = model.GivenName, LastName = model.FamilyName, Email = model.Email }; usrMgr.AddNewlyRegisteredUser(dbUser, model.Password); await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); return(RedirectToAction("Index", "Home")); } AddErrors(result); } } catch { // creating old user failed, probably because AuthenticateUser failed return(View(model)); } } // modelstate was not valid return(View(model)); }
public async Task <ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { // Check to see if this user is in the exising database LogicLayer.UserManager usrMgr = new LogicLayer.UserManager(); try { if (usrMgr.FindUser(model.Email)) { // This requires the user to use the same password as the one in the internal database. var oldUser = usrMgr.AuthenticateUser(model.Email, model.Password); var user = new ApplicationUser { // Populate thes fields with exising data from oldUser GivenName = oldUser.FirstName, FamilyName = oldUser.LastName, EmployeeID = oldUser.EmployeeID, // Populate these fields normally UserName = model.Email, Email = model.Email }; // Create the user with the Identity system UserManager normally. var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { // Use the oldUser.Roles list to add the internally assigned roles to the user. foreach (var role in oldUser.Roles) { UserManager.AddToRole(user.Id, role); } await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); return(RedirectToAction("Index", "Home")); } AddErrors(result); } // Not an existing user, create a user without roles. else { var user = new ApplicationUser { GivenName = model.GivenName, FamilyName = model.FamilyName, UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); return(RedirectToAction("Index", "Home")); } AddErrors(result); } } catch { // Creating old user failed, probably because AuthenticateUser failed return(View(model)); } } // ModelState was not valid return(View(model)); }