public async Task<IActionResult> Register(RegisterViewModel model) { ViewData["Title"] = sr["Register"]; if ((Site.CaptchaOnRegistration)&& (Site.RecaptchaPublicKey.Length > 0)) { model.RecaptchaSiteKey = Site.RecaptchaPublicKey; } model.UseEmailForLogin = Site.UseEmailForLogin; model.RegistrationPreamble = Site.RegistrationPreamble; model.RegistrationAgreement = Site.RegistrationAgreement; model.AgreementRequired = Site.RegistrationAgreement.Length > 0; model.ExternalAuthenticationList = signInManager.GetExternalAuthenticationSchemes(); bool isValid = ModelState.IsValid; if (isValid) { if ((Site.CaptchaOnRegistration)&& (Site.RecaptchaPublicKey.Length > 0)) { string recpatchaSecretKey = Site.RecaptchaPrivateKey; var captchaResponse = await this.ValidateRecaptcha(Request, recpatchaSecretKey); if (!captchaResponse.Success) { //if (captchaResponse.ErrorCodes.Count <= 0) //{ // return View(model); //} ////TODO: log these errors rather than show them in the ui //var error = captchaResponse.ErrorCodes[0].ToLower(); //switch (error) //{ // case ("missing-input-secret"): // ModelState.AddModelError("recaptchaerror", "The secret parameter is missing."); // break; // case ("invalid-input-secret"): // ModelState.AddModelError("recaptchaerror", "The secret parameter is invalid or malformed."); // break; // case ("missing-input-response"): // ModelState.AddModelError("recaptchaerror", "The response parameter is missing."); // break; // case ("invalid-input-response"): // ModelState.AddModelError("recaptchaerror", "The response parameter is invalid or malformed."); // break; // default: // ModelState.AddModelError("recaptchaerror", "Error occured. Please try again"); // break; //} ModelState.AddModelError("recaptchaerror", "reCAPTCHA Error occured. Please try again"); isValid = false; } } if (Site.RegistrationAgreement.Length > 0) { if (!model.AgreeToTerms) { ModelState.AddModelError("agreementerror", sr["You must agree to the terms"]); isValid = false; } } var userName = model.Username.Length > 0 ? model.Username : model.Email.Replace("@", string.Empty).Replace(".", string.Empty); var userNameAvailable = await userManager.LoginIsAvailable(Guid.Empty, userName); if(!userNameAvailable) { ModelState.AddModelError("usernameerror", sr["Username not accepted please try a different value"]); isValid = false; } if (!isValid) { return View(model); } var user = new SiteUser { UserName = userName, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, DisplayName = model.DisplayName, AccountApproved = Site.RequireApprovalBeforeLogin ? false : true }; if (model.DateOfBirth.HasValue) { user.DateOfBirth = model.DateOfBirth.Value; } var result = await userManager.CreateAsync(user, model.Password); if (result.Succeeded) { await ipAddressTracker.TackUserIpAddress(Site.Id, user.Id); if (Site.RequireConfirmedEmail) // require email confirmation { var code = await userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Action(new UrlActionContext { Action ="ConfirmEmail", Controller = "Account", Values = new { userId = user.Id.ToString(), code = code }, Protocol= HttpContext.Request.Scheme }); emailSender.SendAccountConfirmationEmailAsync( Site, model.Email, sr["Confirm your account"], callbackUrl).Forget(); if (this.SessionIsAvailable()) { this.AlertSuccess(sr["Please check your email inbox, we just sent you a link that you need to click to confirm your account"], true); return Redirect("/"); } else { return RedirectToAction("EmailConfirmationRequired", new { userId = user.Id, didSend = true }); } } else { if(Site.RequireApprovalBeforeLogin) { emailSender.AccountPendingApprovalAdminNotification(Site, user).Forget(); return RedirectToAction("PendingApproval", new { userId = user.Id, didSend = true }); } else { await signInManager.SignInAsync(user, isPersistent: false); return this.RedirectToSiteRoot(Site); } } } AddErrors(result); } // If we got this far, something failed, redisplay form return View(model); }
public IActionResult Register() { if(signInManager.IsSignedIn(User)) { return this.RedirectToSiteRoot(Site); } if(!Site.AllowNewRegistration) { return new StatusCodeResult(404); } // login is equivalent to register for new social auth users // if db auth is disabled just redirect if(Site.DisableDbAuth && Site.HasAnySocialAuthEnabled()) { return RedirectToAction("Login"); } ViewData["Title"] = sr["Register"]; var model = new RegisterViewModel(); model.SiteId = Site.Id; if ((Site.CaptchaOnRegistration)&& (Site.RecaptchaPublicKey.Length > 0)) { model.RecaptchaSiteKey = Site.RecaptchaPublicKey; } model.UseEmailForLogin = Site.UseEmailForLogin; model.RegistrationPreamble = Site.RegistrationPreamble; model.RegistrationAgreement = Site.RegistrationAgreement; model.AgreementRequired = Site.RegistrationAgreement.Length > 0; model.ExternalAuthenticationList = signInManager.GetExternalAuthenticationSchemes(); return View(model); }
public async Task<IActionResult> Register(RegisterViewModel model) { ViewData["Title"] = "Register"; if ((Site.CaptchaOnRegistration)&& (Site.RecaptchaPublicKey.Length > 0)) { model.RecaptchaSiteKey = Site.RecaptchaPublicKey; } model.RegistrationPreamble = Site.RegistrationPreamble; model.RegistrationAgreement = Site.RegistrationAgreement; bool isValid = ModelState.IsValid; if (isValid) { if ((Site.CaptchaOnRegistration)&& (Site.RecaptchaPublicKey.Length > 0)) { string recpatchaSecretKey = Site.RecaptchaPrivateKey; var captchaResponse = await this.ValidateRecaptcha(Request, recpatchaSecretKey); if (!captchaResponse.Success) { //if (captchaResponse.ErrorCodes.Count <= 0) //{ // return View(model); //} ////TODO: log these errors rather than show them in the ui //var error = captchaResponse.ErrorCodes[0].ToLower(); //switch (error) //{ // case ("missing-input-secret"): // ModelState.AddModelError("recaptchaerror", "The secret parameter is missing."); // break; // case ("invalid-input-secret"): // ModelState.AddModelError("recaptchaerror", "The secret parameter is invalid or malformed."); // break; // case ("missing-input-response"): // ModelState.AddModelError("recaptchaerror", "The response parameter is missing."); // break; // case ("invalid-input-response"): // ModelState.AddModelError("recaptchaerror", "The response parameter is invalid or malformed."); // break; // default: // ModelState.AddModelError("recaptchaerror", "Error occured. Please try again"); // break; //} ModelState.AddModelError("recaptchaerror", "reCAPTCHA Error occured. Please try again"); isValid = false; } } //if (Site.RegistrationAgreement.Length > 0) //{ // if (!model.AgreeToTerms) // { // ModelState.AddModelError("agreementerror", "You must agree to the terms"); // isValid = false; // } //} if (!isValid) { return View(model); } var user = new SiteUser { UserName = model.LoginName.Length > 0? model.LoginName : model.Email.Replace("@",string.Empty).Replace(".",string.Empty), Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, DisplayName = model.DisplayName }; if (model.DateOfBirth.HasValue) { user.DateOfBirth = model.DateOfBirth.Value; } var result = await userManager.CreateAsync(user, model.Password); if (result.Succeeded) { if(Site.UseSecureRegistration) // require email confirmation { var code = await userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); await emailSender.SendAccountConfirmationEmailAsync( Site, model.Email, "Confirm your account", callbackUrl); if (this.SessionIsAvailable()) { this.AlertSuccess("Please check your email inbox, we just sent you a link that you need to click to confirm your account", true); return Redirect("/"); } else { return RedirectToAction("EmailConfirmationRequired", new { userGuid = user.Id, didSend = true }); } } else { if(Site.RequireApprovalBeforeLogin) { //TODO: send notification to admins about request for approval } else { await signInManager.SignInAsync(user, isPersistent: false); return Redirect("/"); } } } AddErrors(result); } //else //{ // this.AlertDanger("model was invalid", true); //} // If we got this far, something failed, redisplay form return View(model); }
public IActionResult Register() { ViewData["Title"] = "Register"; RegisterViewModel model = new RegisterViewModel(); model.SiteGuid = Site.SiteGuid; if ((Site.CaptchaOnRegistration)&& (Site.RecaptchaPublicKey.Length > 0)) { model.RecaptchaSiteKey = Site.RecaptchaPublicKey; } model.RegistrationPreamble = Site.RegistrationPreamble; model.RegistrationAgreement = Site.RegistrationAgreement; return View(model); }
public async Task<IActionResult> NewUser(RegisterViewModel model) { ISiteSettings selectedSite; // only server admin site can edit other sites settings if ((model.SiteGuid != siteManager.CurrentSite.SiteGuid) && (model.SiteGuid != Guid.Empty) && (siteManager.CurrentSite.IsServerAdminSite)) { selectedSite = await siteManager.Fetch(model.SiteGuid); } else { selectedSite = siteManager.CurrentSite; } ViewData["Title"] = "New User"; if (ModelState.IsValid) { var user = new SiteUser { SiteId = selectedSite.SiteId, SiteGuid = selectedSite.SiteGuid, UserName = model.LoginName, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, DisplayName = model.DisplayName }; if (model.DateOfBirth.HasValue) { user.DateOfBirth = model.DateOfBirth.Value; } var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { this.AlertSuccess(string.Format("user account for <b>{0}</b> was successfully created.", user.DisplayName), true); return RedirectToAction("Index", "UserAdmin", new { siteGuid = selectedSite.SiteGuid }); } AddErrors(result); } // If we got this far, something failed, redisplay form return View(model); }
//[Authorize(Roles = "Admins")] public async Task<ActionResult> NewUser( Guid? siteGuid) { ISiteSettings selectedSite; // only server admin site can edit other sites settings if ((siteGuid.HasValue) && (siteGuid.Value != Guid.Empty) && (siteGuid.Value != siteManager.CurrentSite.SiteGuid) && (siteManager.CurrentSite.IsServerAdminSite)) { selectedSite = await siteManager.Fetch(siteGuid.Value); ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, "{0} - New User", selectedSite.SiteName); } else { selectedSite = siteManager.CurrentSite; ViewData["Title"] = "New User"; } RegisterViewModel model = new RegisterViewModel(); model.SiteGuid = selectedSite.SiteGuid; return View(model); }