public async Task <ActionResult> ResetPassword(ResetPasswordViewModel model) { if (!EmailValidator.IsValid(model.Email)) { ModelState.AddModelError("Email", "Email kunne ikke valideres som værende korrekt email format."); } else { model.Email = EmailValidator.ParseEmail(model.Email); } if (!ModelState.IsValid) { return(View(model)); } var user = await UserManager.FindByNameAsync(model.Email); if (user == null) { // Don't reveal that the user does not exist return(RedirectToAction("ResetPasswordConfirmation", "Account")); } var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password); if (result.Succeeded) { return(RedirectToAction("ResetPasswordConfirmation", "Account")); } AddErrors(result); return(View()); }
public async Task <ActionResult> Register(RegisterViewModel model) { if (!EmailValidator.IsValid(model.Email)) { ModelState.AddModelError("Email", "Email kunne ikke valideres som værende korrekt email format."); } else { model.Email = EmailValidator.ParseEmail(model.Email); } if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { var callbackUrl = await GenerateEmailConfirmationEmail(user); ViewBag.Link = callbackUrl; return(View("DisplayEmail")); } AddErrors(result); } // If we got this far, something failed, redisplay form return(View(model)); }
public async Task <ActionResult> Login(LoginViewModel model, string returnUrl) { if (!EmailValidator.IsValid(model.Email)) { ModelState.AddModelError("Email", "Email kunne ikke valideres som værende korrekt email format."); } else { model.Email = EmailValidator.ParseEmail(model.Email); } if (!ModelState.IsValid) { ViewBag.ReturnUrl = returnUrl; ViewBag.LiveDemoMemberships = Demo.GetLiveDemoMemberships(); ViewBag.EnableDemo = (ViewBag.LiveDemoMemberships != null && ViewBag.LiveDemoMemberships.Count > 0); ViewBag.EnableMobil = UserManager.TwoFactorProviders.ContainsKey("PhoneCode"); model.LoginState = LoginViewModel.State.Login; return(View(model)); } // This doen't count login failures towards lockout only two factor authentication // To enable password failures to trigger lockout, change to shouldLockout: true var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, model.RememberMe, shouldLockout : false); switch (result) { case SignInStatus.Success: var cookie = new HttpCookie("LastEmailLogin", model.Email); cookie.Expires = DateTime.Now.AddMonths(1); Response.AppendCookie(cookie); return(RedirectToLocal(returnUrl)); case SignInStatus.UnConfirmed: return(RedirectToAction("EmailNotConfirmed", new { email = model.Email })); case SignInStatus.LockedOut: return(View("Lockout")); case SignInStatus.RequiresTwoFactorAuthentication: return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl })); case SignInStatus.Failure: default: ViewBag.ReturnUrl = returnUrl; ViewBag.LiveDemoMemberships = Demo.GetLiveDemoMemberships(); ViewBag.EnableDemo = (ViewBag.LiveDemoMemberships != null && ViewBag.LiveDemoMemberships.Count > 0); ViewBag.EnableMobil = UserManager.TwoFactorProviders.ContainsKey("PhoneCode"); model.LoginState = LoginViewModel.State.Login; ModelState.AddModelError("", "Invalid login attempt."); return(View(model)); } }
public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) { if (User.Identity.IsAuthenticated) { return(RedirectToAction("Index", "Manage")); } if (ModelState.IsValid) { // Get the information about the user from the external login provider var info = await AuthenticationManager.GetExternalLoginInfoAsync(); if (info == null) { return(View("ExternalLoginFailure")); } if (!EmailValidator.IsValid(model.Email)) { ViewBag.Message = string.Format("Unable to validate email '{0}' as email.", model.Email); return(View("ExternalLoginFailure")); } else { model.Email = EmailValidator.ParseEmail(model.Email); } var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user); if (result.Succeeded) { result = await UserManager.AddLoginAsync(user.Id, info.Login); if (result.Succeeded) { // We dont log the user in until there email has been validated. //await SignInHelper.SignInAsync(user, isPersistent: false, rememberBrowser: false); // Generete token email var callbackUrl = GenerateEmailConfirmationEmail(user); ViewBag.Link = callbackUrl; return(RedirectToAction("DisplayEmail")); //return RedirectToLocal(returnUrl); } } AddErrors(result); } ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public async Task <ActionResult> Create(RegisterViewModel userViewModel, params string[] selectedRoles) { if (!EmailValidator.IsValid(userViewModel.Email)) { ModelState.AddModelError("Email", "Email kunne ikke valideres som værende korrekt email format."); } else { userViewModel.Email = EmailValidator.ParseEmail(userViewModel.Email); } if (ModelState.IsValid) { var user = new ApplicationUser { UserName = userViewModel.Email, Email = userViewModel.Email, EmailConfirmed = true }; var adminresult = await UserManager.CreateAsync(user, userViewModel.Password); //Add User to the selected Roles if (adminresult.Succeeded) { if (selectedRoles != null) { var result = await UserManager.AddUserToRolesAsync(user.Id, selectedRoles); if (!result.Succeeded) { ModelState.AddModelError("", result.Errors.First()); ViewBag.RoleId = new SelectList(await RoleManager.Roles.ToListAsync(), "Name", "Name"); return(View()); } } } else { ModelState.AddModelError("", adminresult.Errors.First()); ViewBag.RoleId = new SelectList(RoleManager.Roles, "Name", "Name"); return(View()); } return(RedirectToAction("Index")); } ViewBag.RoleId = new SelectList(RoleManager.Roles, "Name", "Name"); return(View()); }
public async Task <ActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (!EmailValidator.IsValid(model.Email)) { ModelState.AddModelError("Email", "Email kunne ikke valideres som værende korrekt email format."); } else { model.Email = EmailValidator.ParseEmail(model.Email); } if (ModelState.IsValid) { var user = await UserManager.FindByNameAsync(model.Email); if (user == null) { // Don't reveal that the user does not exist or is not confirmed //return View("ForgotPasswordConfirmation"); if (!EmailValidator.IsValid(model.Email)) { return(View("ForgotPasswordMissingAccount")); } var pilots = EmailValidator.FindPilotsByEmail(model.Email); if (!pilots.Any()) { return(View("ForgotPasswordMissingAccount")); } // HACK: We only attach to the first pilot profil in this setup. var pilot = pilots.First(); var email = EmailValidator.ParseEmail(model.Email); // Create mobilPhone Application User, Email is required and + is removed user = new ApplicationUser() { UserName = email, Email = email, EmailConfirmed = true, BoundToPilotId = pilot.PilotId.ToString(), PhoneNumberConfirmed = false, PhoneNumber = string.Empty, TwoFactorEnabled = false }; var result = UserManager.Create(user); if (!result.Succeeded) { throw new SecurityException(string.Format("Failed to generate user {0} for {1}", email, result.Errors.FirstOrDefault())); } result = UserManager.SetLockoutEnabled(user.Id, false); var welcomecode = await UserManager.GeneratePasswordResetTokenAsync(user.Id); var callbackWelcomeUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = welcomecode }, protocol: Request.Url.Scheme); await UserManager.SendEmailAsync(user.Id, "Startlist.club - Set Password", "Please set your password at " + callbackWelcomeUrl); ViewBag.Link = callbackWelcomeUrl; ViewBag.Pilot = pilot.Name; ViewBag.Email = email; return(View("ForgotPasswordGeneratedAccount")); } if (!(await UserManager.IsEmailConfirmedAsync(user.Id))) { ViewBag.Email = user.Email; return(View("DisplayEmail")); } var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); await UserManager.SendEmailAsync(user.Id, "Startlist.club - Reset Password", "Please reset your password at " + callbackUrl); ViewBag.Link = callbackUrl; return(View("ForgotPasswordConfirmation")); } // If we got this far, something failed, redisplay form return(View(model)); }