public async Task <IActionResult> KayitOl(RegisterViewModel model) { if (ModelState.IsValid) { var kullanici = new OgrenciUser { UserName = model.Name, Email = model.Email, Sinif = model.Class }; /*if (signInManager.IsSignedIn(User)) * { * return Redirect("KayitOl"); * }*/ var sonuc = await userManager.CreateAsync(kullanici, model.Password); if (sonuc.Succeeded) { var token = await userManager.GenerateEmailConfirmationTokenAsync(kullanici); var confirmationLink = Url.Action("ConfirmEmail", "Hesap", new { userId = kullanici.Id, token = token }, Request.Scheme); logger.Log(LogLevel.Warning, confirmationLink); if (signInManager.IsSignedIn(User) && User.IsInRole("Admin")) { return(RedirectToAction("KullanicilariListele", "Administration")); } ViewBag.ErrorTitle = "Kayıt tamamlandı"; ViewBag.ErrorMessage = "Giriş yapmadan önce lütfen mail adresinizi onaylayın." + " Spam kutunuzu kontrol edin ve yollanan link üzerinden kaydınızı tamamlayın."; return(View("SayfaBulunamadi")); } foreach (var error in sonuc.Errors) { ModelState.AddModelError("", error.Description); } } return(View(model)); }
public async Task <IActionResult> ExternalLoginCallback(string returnUrl = null, string remoteError = null) { returnUrl = returnUrl ?? Url.Content("~/"); LoginViewModel loginViewModel = new LoginViewModel { ReturnUrl = returnUrl, ExternalLogins = (await signInManager.GetExternalAuthenticationSchemesAsync()).ToList() }; if (remoteError != null) { ModelState.AddModelError(string.Empty, $"Hatanın alındığı yer: {remoteError}"); return(View("Giris", loginViewModel));//Google girisi yapilmazsa gel buraya } var info = await signInManager.GetExternalLoginInfoAsync(); if (info == null) { ModelState.AddModelError(string.Empty, $"Giriş sırasında hata yaşandı"); return(View("Giris", loginViewModel)); } var email = info.Principal.FindFirstValue(ClaimTypes.Email); OgrenciUser user = null; if (email != null) { user = await userManager.FindByEmailAsync(email); if (user != null && !user.EmailConfirmed) { ModelState.AddModelError(string.Empty, "Mail adresinizi onaylayın"); return(View("Giris", loginViewModel)); } } var signInResult = await signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent : false, bypassTwoFactor : true); if (signInResult.Succeeded) { return(LocalRedirect(returnUrl)); } else { if (email != null) { if (user == null) { user = new OgrenciUser {//sadece name olabilir givenname yerine UserName = info.Principal.FindFirstValue(ClaimTypes.GivenName), Email = info.Principal.FindFirstValue(ClaimTypes.Email) }; await userManager.CreateAsync(user); var token = await userManager.GenerateEmailConfirmationTokenAsync(user); var confirmationLink = Url.Action("ConfirmEmail", "Hesap", new { userId = user.Id, token = token }, Request.Scheme); logger.Log(LogLevel.Warning, confirmationLink); ViewBag.ErrorTitle = "Kayıt başarılı"; ViewBag.ErrorMessage = "Giriş yapmadan önce lütfen mail adresinizi onaylayın." + " Mail adresinize yollanan link üzerinden onaylayabilirsiniz."; return(View("SayfaBulunamadi")); } await userManager.AddLoginAsync(user, info); await signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } ViewBag.ErrorTitle = $"Mail onayı gelmedi: {info.LoginProvider}"; ViewBag.ErrorMessage = $"Lütfen teknik destek ekibimiz ile bağlantıya geçin."; return(View("SayfaBulunamadi")); } }