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ış!" } })); })); }
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()); } }