/// <summary> /// Validates the Google Recaptcha Version 2. /// </summary> public void Validate() { IRecaptcha <RecaptchaV2Result> recaptcha = new RecaptchaV2( new RecaptchaV2Data() { Secret = SecretKey }); RecaptchaV2Result result = null; try { result = recaptcha.Verify(); if (result == null) { ErrorMessage = "Oops! Unknown error!"; return; } IsValid = result.Success; if (IsValid) { return; } if (result.ErrorCodes != null && result.ErrorCodes.Length > 0) { ErrorMessage = String.Empty; foreach (var errorCode in result.ErrorCodes) { switch (errorCode) { case "missing-input-secret": ErrorMessage += "The secret parameter is missing - "; break; case "invalid-input-secret": ErrorMessage += "The secret parameter is invalid or malformed - "; break; case "missing-input-response": ErrorMessage += "The response parameter is missing - "; break; case "invalid-input-response": ErrorMessage += "The response parameter is invalid or malformed - "; break; } ErrorMessage = ErrorMessage.TrimEnd(' ', '-'); } } else { ErrorMessage = "Oops! Unknown error!"; } } catch (Exception) { ErrorMessage = "Oops! Unknown error!"; } }
public async Task <ActionResult> Login(LoginViewModel modal, string returnUrl, string EmailLoginCode, FormCollection form) { IRecaptcha <RecaptchaV2Result> recaptcha = new RecaptchaV2(new RecaptchaV2Data() { Secret = "6LfqzzcUAAAAAHgafe6oixzCCTIZOzvbPbGta8fT" }); RecaptchaV2Result recaptchaResult = recaptcha.Verify(); string dontcheckgrc = form["dontcheckgrc"]; if (!(dontcheckgrc == "on" || recaptchaResult.Success) || !ModelState.IsValid) //if (!ModelState.IsValid) { return(View(modal)); } //Email Login Code //UserTwoFactor utf = db.UserTwoFactor.Where(c=>c.UserId== form.Email).FirstOrDefault(); //if (utf != null&& utf.EmailLogin.HasValue&&utf.EmailLogin.Value) //{ // if (Session["EmailLoginCode"] == null) // return View(form); // if (Session["EmailLoginCode"].ToString() != EmailLoginCode) // return View(form); //} //var result = await SignInManager.PasswordSignInAsync(form.Email, form.Password, form.RememberMe, shouldLockout: false); var result = await SignInManager.PasswordSignInAsync(modal.Email, modal.Password, modal.RememberMe, shouldLockout : true); //Email Confirm // If it was a successful login if (result == SignInStatus.Success || result == SignInStatus.RequiresVerification) { // check that their email address is confirmed: var user = await UserManager.FindByNameAsync(modal.Email); //Email認證 if (!await UserManager.IsEmailConfirmedAsync(user.Id)) { // sign them out! AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); TempData["UserId"] = user.Id; return(RedirectToAction("UnconfirmedEmail", "Account", new { area = "" })); } // reset their login } switch (result) { case SignInStatus.Success: List <UserNewsUrls> testUrls = new List <UserNewsUrls>(); UserNewsUrls testUrl1 = new UserNewsUrls { UserNewsTitle = "管理", UserNewsUrl = Url.Action("Index", "Manage", new { area = "" }), UserNewsCSS = "btn btn-warning" }; UserNewsUrls testUrl2 = new UserNewsUrls { UserNewsTitle = "通知", UserNewsUrl = Url.Action("UserMessage", "Account", new { area = "" }), UserNewsCSS = "btn btn-success" }; UserNewsUrls testUrl3 = new UserNewsUrls { UserNewsTitle = "測試登入", UserNewsUrl = Url.Action("TestSuccessLogin", "Account", new { area = "" }), UserNewsCSS = "btn btn-info" }; testUrls.Add(testUrl1); testUrls.Add(testUrl2); testUrls.Add(testUrl3); //NewsHub.SendMessageToAll("使用者登入", string.Format("{0}已登入", modal.Email),Url.Action("Index","Manage"),testUrls); NewsHub.SendMessageToUser(true, "*****@*****.**", "使用者登入", string.Format("{0}已登入", modal.Email), Url.Action("Index", "Manage", new { area = "" }), testUrls); //NewsHub.SendMessageToUser(modal.Email, "*****@*****.**", "使用者登入", string.Format("{0}已登入", modal.Email), ""); return(RedirectToLocal(returnUrl)); case SignInStatus.RequiresVerification: return(RedirectToAction("SendCode", "Account", new { area = "", ReturnUrl = returnUrl, RememberMe = modal.RememberMe })); case SignInStatus.Failure: default: ModelState.AddModelError("", "登入嘗試失試。"); if (db.AspNetUsers.Where(n => n.UserName == modal.Email).ToList().Count() == 1) { LoginErrorEmail.SendEmail(modal.Email, Request.Browser); } return(View(modal)); } }
public async Task <ActionResult> Register(RegisterViewModel modal, FormCollection form) { int CityId = 0; int DistrictId = 0; int RoadId = 0; string LnStr = form["AddressRLn"]; string AlyStr = form["AddressRAly"]; string NoStr = form["AddressRNo"]; string FStr = form["AddressRF"]; string RmStr = form["AddressRRm"]; string dontcheckgrc = form["dontcheckgrc"]; string dontcheckemail = form["dontcheckemail"]; string registerEmployee = form["registerEmployee"]; bool checkAddress = false; if (int.TryParse(form["selectRCity"], out CityId)) { if (int.TryParse(form["selectRDistrict"], out DistrictId)) { if (int.TryParse(form["selectRRoad"], out RoadId)) { checkAddress = true; } } } IRecaptcha <RecaptchaV2Result> recaptcha = new RecaptchaV2(new RecaptchaV2Data() { Secret = "6LfqzzcUAAAAAHgafe6oixzCCTIZOzvbPbGta8fT" }); RecaptchaV2Result recaptchaResult = recaptcha.Verify(); if ((dontcheckgrc == "on" || recaptchaResult.Success) && ModelState.IsValid && checkAddress) //if (ModelState.IsValid) { string CityName = db.AddressCity.Where(n => n.Id == CityId).Select(n => n.Name).FirstOrDefault(); string DistrictName = db.AddressDistrict.Where(n => n.Id == DistrictId).Select(n => n.Name).FirstOrDefault(); string RoadName = db.AddressRoad.Where(n => n.Id == RoadId).Select(n => n.Name).FirstOrDefault(); string ResidenceAddress = CityName + " " + DistrictName + " " + RoadName; if (LnStr != string.Empty) { ResidenceAddress += " " + LnStr + "巷"; } if (AlyStr != string.Empty) { ResidenceAddress += " " + AlyStr + "弄"; } if (NoStr != string.Empty) { ResidenceAddress += " " + NoStr + "號"; } if (FStr != string.Empty) { ResidenceAddress += " " + FStr + "樓"; } if (RmStr != string.Empty) { ResidenceAddress += " " + RmStr + "室"; } var user = new ApplicationUser { UserName = modal.Email , Email = modal.Email , Name = modal.Name , ResidenceAddress = ResidenceAddress , IdentityCardNumber = modal.IdentityCardNumber , BirthDay = modal.BirthDay }; var result = await UserManager.CreateAsync(user, modal.Password); if (result.Succeeded) { AspNetUsers anuFixData = db.AspNetUsers.Where(n => n.UserName == user.UserName).First(); UserResidenceAddress ura = new UserResidenceAddress { Id = anuFixData.Id, AddressCityId = CityId, AddressDistrictId = DistrictId, AddressRoadId = RoadId, AddressLn = LnStr, AddressAly = AlyStr, AddressNo = NoStr, AddressF = FStr, AddressRm = RmStr }; db.UserResidenceAddress.Add(ura); if (registerEmployee == "on") { IsEmployee nie = new IsEmployee { UserId = modal.Email, RegisterDate = DateTime.Now }; db.IsEmployee.Add(nie); } db.SaveChanges(); //await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); //return RedirectToAction("TestSuccessLogin", "Account"); if (dontcheckemail == "on") { anuFixData.EmailConfirmed = true; db.SaveChanges(); await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); return(RedirectToAction("Index", "Default", new { area = "" })); } var callbackUrl = await generateConfirmAccountEmail(user.Id); #if DEBUG TempData["ViewBagLink"] = callbackUrl; #endif ViewBag.Message = "請完成帳號的電子郵件認證,方可登入。"; return(View("Info")); } } return(View(modal)); }