Exemplo n.º 1
0
        public async Task <IActionResult> GirisYap([FromBody] GirisDto girisBilgileri, string returnUrl)
        {
            return(await HataKontrolluDondur <Task <IActionResult> >(async() =>
            {
                var kullaniciEntity = await userManager.KullaniciyiGetirKullaniciAdinaGoreAsync(girisBilgileri.KullaniciAdi);
                if (kullaniciEntity == null || kullaniciEntity.Pasif)
                {
                    Sonuc sonuc = Sonuc.Basarisiz(new Hata[] { new Hata {
                                                                   Kod = "", Tanim = "Kullanıcı yok veya aktif değil!"
                                                               } });
                    return Ok(sonuc);
                }

                var result = await signInManager.PasswordSignInAsync(girisBilgileri.KullaniciAdi, girisBilgileri.Sifre, true, true);
                if (result.IsNotAllowed)
                {
                    Sonuc sonuc = Sonuc.Basarisiz(new Hata[] { new Hata {
                                                                   Kod = "", Tanim = "Kullanıcının giriş izni yok!"
                                                               } });
                    return Ok(sonuc);
                }
                if (result.IsLockedOut)
                {
                    Sonuc sonuc = Sonuc.Basarisiz(new Hata[] { new Hata {
                                                                   Kod = "", Tanim = "Kullanıcı hesabı bloke!"
                                                               } });
                    return Ok(sonuc);
                }
                if (result.RequiresTwoFactor)
                {
                    KayitSonuc <object> sonuc = KayitSonuc <object> .Basarisiz(new Hata[] { new Hata {
                                                                                                Kod = "", Tanim = "Kullanıcı 2 faktörlü giriş için gerekli işlemler yapılmamış!"
                                                                                            } });
                    return Ok(sonuc);
                }
                if (result.Succeeded)
                {
                    var identity = await GetClaimsIdentity(girisBilgileri, kullaniciEntity);
                    if (identity == null)
                    {
                        return Ok(KayitSonuc <object> .Basarisiz(new Hata[] { new Hata {
                                                                                  Kod = "", Tanim = "Kullanıcı adı ve/veya şifre yanlış!"
                                                                              } }));
                    }
                    var jwt = Tokens.GenerateJwt(identity, jwtFactory, girisBilgileri.KullaniciAdi, uygulamaAyarlari);
                    var tokenString = jwt.Result;

                    var kullanici = kullaniciEntity.ToKullaniciBilgi();
                    kullanici.GecerlilikOmruDakika = (int)uygulamaAyarlari.ValidFor.TotalSeconds;
                    var sonuc = KayitSonuc <object> .IslemTamam(new { tokenString, kullanici, returnUrl });
                    sonuc.Mesajlar[0] = "Giriş başarılı";
                    sonuc.Mesajlar.Add($"Hoşgeldiniz {kullanici.TamAdi}!");
                    return Ok(sonuc);
                }
                return Ok(KayitSonuc <object> .Basarisiz(new Hata[] { new Hata {
                                                                          Kod = "", Tanim = "Kullanıcı adı ve/veya şifre yanlış!"
                                                                      } }));
            }));
        }
Exemplo n.º 2
0
        private async Task <IActionResult> KullaniciBilgisiVeTokenYarat(string kullaniciAdi, string returnUrl = null)
        {
            try
            {
                var bulunanKullanici = await userManager.KullaniciyiGetirKullaniciAdinaGoreAsync(kullaniciAdi);

                if (bulunanKullanici == null)
                {
                    return(Unauthorized());
                }

                var claims = new Claim[] {
                    new Claim(ClaimTypes.NameIdentifier, bulunanKullanici.Id.ToString()),
                    new Claim(ClaimTypes.Name, bulunanKullanici.UserName),
                    new Claim(ClaimTypes.GivenName, bulunanKullanici.Kisi.Ad),
                    new Claim(ClaimTypes.Surname, bulunanKullanici.Kisi.Soyad),
                    new Claim(ClaimTypes.DateOfBirth, bulunanKullanici.Kisi.DogumTarihi.ToShortDateString()),
                    new Claim(ClaimTypes.Email, bulunanKullanici.Email),
                    new Claim(ClaimTypes.Gender, bulunanKullanici.Kisi.Cinsiyeti.CinsiyetAdi),
                    new Claim("kisiNo", bulunanKullanici.KisiNo.ToString()),
                };



                var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(uygulamaAyarlari.JwtKey));
                var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

                var token = new JwtSecurityToken(
                    uygulamaAyarlari.JwtIssuer,
                    uygulamaAyarlari.JwtIssuer,
                    claims,
                    expires: DateTime.Now.AddMinutes(30),
                    signingCredentials: creds);
                string tokenString = new JwtSecurityTokenHandler().WriteToken(token);
                var    kullanici   = bulunanKullanici.ToKullaniciBilgi();
                return(Ok(new { tokenString, kullanici, returnUrl }));
            }
            catch
            {
                return(Unauthorized());
            }
        }