Пример #1
0
        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));
        }
Пример #2
0
        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"));
            }
        }