public async Task <IActionResult> SifreKurtar([FromBody] SifreKurtarBaslatDto sifreKurtarBaslat) { return(await HataKontrolluDondur <Task <IActionResult> >(async() => { var user = await userManager.KullaniciyiGetirEpostayaGore(sifreKurtarBaslat.Eposta); if (user == null || !(await userManager.IsEmailConfirmedAsync(user))) { return Ok(Sonuc.Basarisiz(new Exception("Onaylı kullanıcı yok!"))); } if (user.Pasif) { return Ok(Sonuc.Basarisiz(new Exception("Onaylı kullanıcı yok!"))); } // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713 // Send an email with this link var code = await userManager.GeneratePasswordResetTokenAsync(user); var callbackUrl = string.Format("{0}/uyelik/sifresifirla?code={1}", uygulamaAyarlari.JwtIssuer, code);// Url.ResetPasswordCallbackLink(user.Id.ToString(), code, HttpContext.Request.Scheme); await postaci.SendEmailAsync(user.Email, $"{user.UserName} için şifre kurtarma epostasi", "Şifre kurtarmaya devam etmek için <a href=\"" + callbackUrl + "\">tıklayınız.</a>"); return Ok(Sonuc.Tamam); })); }
protected async Task <IActionResult> HataKontrolluDondur <R>(Func <Task <IActionResult> > codetoExecute) where R : class { if (!ModelState.IsValid) { return(new DortYuzYirmiIkiResult(ModelState)); } try { return(await codetoExecute.Invoke()); } catch (BadRequestError hata) { return(BadRequest(new BadRequestError(hata.Message))); } catch (ModelValidationError) { return(new DortYuzYirmiIkiResult(ModelState)); } catch (NotFoundError hata) { return(NotFound(Sonuc.Basarisiz(new Exception("Kayıt bulunamadı!", hata)))); } catch (InternalServerError hata) { return(NotFound(Sonuc.Basarisiz(new Exception("İşlem başarısız. Lütfen daha sonra tekrar deneyiniz!", hata)))); } catch (Exception hata) { return(StatusCode(500, Sonuc.Basarisiz(new Exception(Properties.Resources.IslemGerceklesmedi, hata)))); } }
public async Task <IActionResult> Get(int id, [FromQuery] string neden, [FromQuery] string alanlar) { return(await KullaniciVarsaCalistir <IActionResult>(async() => { if (id <= 0) { return BadRequest(Sonuc <KullaniciYazDto> .Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = SonucMesajlari.Liste[MesajAnahtarlari.SifirdanBuyukDegerGerekli] } })); } var kayit = await kullaniciRepo.BulAsync(id); if (kayit == null) { return NotFound(); } if (neden == "yaz") { var yazSonucDto = KayitSonuc <KullaniciYazDto> .IslemTamam(kayit.ToDto()); return Ok(yazSonucDto.ShapeData(alanlar)); } var resource = KayitSonuc <KullaniciDetayDto> .IslemTamam(kayit.ToKullaniciDetayDto()); return Ok(resource.ShapeData(alanlar)); })); }
public async Task <IActionResult> UyelikBaslat([FromBody] UyelikYaratDto model) { return(await HataKontrolluDondur <Task <IActionResult> >(async() => { if (ModelState.IsValid) { var user = model.ToEntity(); user.YaratilmaTarihi = DateTime.Now; IdentityResult result = null; try { result = await userManager.CreateAsync(user, model.Sifre); if (result.Succeeded) { await EPostaAktivasyonKoduPostala(user); Sonuc sonuc = Sonuc.Tamam; sonuc.Mesajlar.Add("Üyelik işlemi başlatıldı. Aktivasyon işlemleri için eposta gönderildi. Lütfen eposta adresinizi kontrol edin"); return Ok(sonuc); } } catch (Exception hata) { return BadRequest(hata); } AddErrors(result); } return Ok(Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "Üyelik başlatılamadı", Tanim = "Üyelik işleminiz başlatılamadı. Lütfen daha sonra tekrar deneyiniz..." } })); })); }
public async Task <IActionResult> Update(int id, [FromBody] ProfilYazDto yazDto) { return(await KullaniciVarsaCalistir <IActionResult>(async() => { Sonuc sonuc = null; var userFromRepo = await repo.BulAsync(aktifKullaniciNo); if (userFromRepo == null) { sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = $"{id} numaralı kullanıcı bulunamadı!" } }); return Ok(sonuc); } if (aktifKullaniciNo != userFromRepo.Id) { sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Sizin dışınızdaki kullanıcıyı değiştirme yetkiniz yok!" } }); return Ok(sonuc); } KullaniciMappers.Kopyala(yazDto, userFromRepo); if (await repo.KaydetAsync()) { sonuc = Sonuc.Tamam; sonuc.Mesajlar[0] = "Kullanıcı bilgileri kaydedildi."; return Ok(); } sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = $"{id} numaralı kullanıcı bilgileri kaydedilemedi!" } }); return Ok(sonuc); })); }
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ış!" } })); })); }
public async Task <IActionResult> Sil(int id) { return(await KullaniciVarsaCalistir <IActionResult>(async() => { Sonuc sonuc = null; var dbdekiKayit = await repo.FotografBulAsync(id); if (dbdekiKayit == null) { sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Fotoğraf bulunamadı!" } }); return Ok(sonuc); } if (dbdekiKayit.ProfilFotografi) { sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Asıl fotoğrafı silemezsiniz!" } }); return Ok(sonuc); } if (dbdekiKayit.PublicId != null) { var deleteParams = new DeletionParams(dbdekiKayit.PublicId); var result = cloudinary.Destroy(deleteParams); if (result.Result == "ok") { repo.Sil(dbdekiKayit); } } if (dbdekiKayit.PublicId == null) { repo.Sil(dbdekiKayit); } if (await repo.KaydetAsync()) { sonuc = Sonuc.Tamam; sonuc.Mesajlar[0] = "Fotoğraf silindi"; return Ok(sonuc); } sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Fotoğraf silinemedi!" } }); return Ok(sonuc); })); }
public async Task <IActionResult> Get([FromQuery] string kullaniciAdi) { return(await HataKontrolluDondur <IActionResult>(async() => { if (string.IsNullOrEmpty(kullaniciAdi.Trim())) { return BadRequest(Sonuc <KullaniciYazDto> .Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Kullanıcı adı boş olamaz!" } })); } var kullaniciVar = await userManager.KullaniciAdiKullanimdaAsync(kullaniciAdi); return Ok(kullaniciVar); })); }
protected async Task <IActionResult> KullaniciVarsaCalistir <R>(Func <Task <IActionResult> > codetoExecute) where R : class { var aktifKullaniciClaim = User.FindFirst("id"); if (aktifKullaniciClaim == null) { return(Unauthorized()); } aktifKullaniciNo = int.Parse(aktifKullaniciClaim.Value); if (!ModelState.IsValid) { return(new DortYuzYirmiIkiResult(ModelState)); } try { return(await codetoExecute.Invoke()); } catch (BadRequestError hata) { return(BadRequest(new BadRequestError(hata.Message))); } catch (ModelValidationError) { return(new DortYuzYirmiIkiResult(ModelState)); } catch (UnauthorizedError) { return(Unauthorized()); } catch (NotFoundError hata) { return(NotFound(Sonuc.Basarisiz(new Exception("Kayıt bulunamadı!", hata)))); } catch (InternalServerError hata) { return(NotFound(Sonuc.Basarisiz(new Exception("İşlem başarısız. Lütfen daha sonra tekrar deneyiniz!", hata)))); } catch (Exception hata) { return(StatusCode(500, Sonuc.Basarisiz(new Exception(Properties.Resources.IslemGerceklesmedi, hata)))); } }
public async Task <IActionResult> CikisYap() { return(await KullaniciVarsaCalistir <IActionResult>(async() => { try { await signInManager.SignOutAsync(); var sonuc = Sonuc.Tamam; return Ok(sonuc); } catch (Exception hata) { var sonuc = Sonuc.Basarisiz(hata); return Ok(sonuc); } })); }
public async Task <IActionResult> ResetPassword([FromBody] SifreKurtarDto model) { return(await HataKontrolluDondur <Task <IActionResult> >(async() => { var user = await userManager.FindByEmailAsync(model.Eposta); if (user == null) { return NotFound("Kullanıcı yok!"); } var result = await userManager.ResetPasswordAsync(user, model.Kod, model.Sifre); if (result.Succeeded) { return Ok(Sonuc.Tamam); } return Ok(Sonuc.Basarisiz(new Exception("Şifre değişmedi! Değiştirme süreniz bitmiş olabilir. Süreci yeniden başlatın!!"))); })); }
public async Task <IActionResult> ProfilFotografiYap([FromBody] int fotoId) { return(await KullaniciVarsaCalistir <IActionResult>(async() => { Sonuc sonuc = null; var dbdekiKayit = await repo.FotografBulAsync(fotoId); if (dbdekiKayit == null) { sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Profil fotoğrafı bulunamadı!" } }); return Ok(sonuc); } if (dbdekiKayit.ProfilFotografi) { sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Bu fotoğraf zaten profil fotoğrafı!" } }); return Ok(sonuc); } var suankiAsilFoto = await repo.KullanicininAsilFotosunuGetirAsync(aktifKullaniciNo); if (suankiAsilFoto != null) { suankiAsilFoto.ProfilFotografi = false; } dbdekiKayit.ProfilFotografi = true; if (await repo.KaydetAsync()) { sonuc = Sonuc.Tamam; sonuc.Mesajlar[0] = "Profil fotoğrafı değiştirildi."; } else { sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Profil fotoğrafı değiştirilemedi!" } }); } return Ok(sonuc); })); }
public async Task <IActionResult> Get(int id, [FromQuery] string neden, [FromQuery] string alanlar) { return(await KullaniciVarsaCalistir <IActionResult>(async() => { Sonuc sonuc = null; if (id <= 0) { sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = SonucMesajlari.Liste[MesajAnahtarlari.SifirdanBuyukDegerGerekli] } }); return Ok(sonuc); } if (id != aktifKullaniciNo) { sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Profil fotoğrafı değiştirilemedi!" } }); return Ok(sonuc); } var kayit = await repo.BulAsync(id); if (kayit == null) { sonuc = Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Kullanıcı bulunamadı!" } }); return Ok(sonuc); } if (neden == "yaz") { var yazSonucDto = KayitSonuc <ProfilOku> .IslemTamam(kayit.ToProfilOkuDto()); return Ok(yazSonucDto.ShapeData(alanlar)); } var resource = KayitSonuc <KullaniciDetayDto> .IslemTamam(kayit.ToKullaniciDetayDto()); return Ok(resource.ShapeData(alanlar)); })); }
public async Task <IActionResult> YenidenKodGonder(string eposta) { return(await HataKontrolluDondur <Task <IActionResult> >(async() => { if (string.IsNullOrEmpty(eposta)) { return Ok(Sonuc.Basarisiz(new Exception("yanlış bilgi"))); } Kullanici user = null; user = await userManager.KullaniciyiGetirEpostayaGore(eposta); if (user == null) { return Ok(Sonuc.Basarisiz(new Exception("yanlış bilgi"))); } if (user.Email != eposta) { return Ok(Sonuc.Basarisiz(new Exception("yanlış bilgi"))); } await EPostaAktivasyonKoduPostala(user); return Ok(Sonuc.Tamam); })); }
public async Task <IActionResult> Facebook([FromBody] FacebookAuthDto model) { // 1.generate an app access token var appAccessTokenResponse = await Client.GetStringAsync($"https://graph.facebook.com/oauth/access_token?client_id={_fbAuthSettings.AppId}&client_secret={_fbAuthSettings.AppSecret}&grant_type=client_credentials"); var appAccessToken = JsonConvert.DeserializeObject <FacebookAppAccessToken>(appAccessTokenResponse); // 2. validate the user access token var userAccessTokenValidationResponse = await Client.GetStringAsync($"https://graph.facebook.com/debug_token?input_token={model.AccessToken}&access_token={appAccessToken.AccessToken}"); var userAccessTokenValidation = JsonConvert.DeserializeObject <FacebookUserAccessTokenValidation>(userAccessTokenValidationResponse); if (!userAccessTokenValidation.Data.IsValid) { return(BadRequest(Errors.AddErrorToModelState("login_failure", "Invalid facebook token.", ModelState))); } // 3. we've got a valid token so we can request user data from fb var userInfoResponse = await Client.GetStringAsync($"https://graph.facebook.com/v2.8/me?fields=id,email,first_name,last_name,name,gender,locale,birthday,picture&access_token={model.AccessToken}"); var facebookUserInfo = JsonConvert.DeserializeObject <FacebookUserData>(userInfoResponse); // 4. ready to create the local user account (if necessary) and jwt var user = await _userManager.KullaniciyiGetirEpostayaGore(facebookUserInfo.Email); string mesaj = string.Empty; if (user == null) { user = new Kullanici() { UserName = facebookUserInfo.Email, Email = facebookUserInfo.Email, EmailConfirmed = false, YaratilmaTarihi = DateTime.Now, Pasif = true, Yonetici = false, FacebookId = facebookUserInfo.Id, //FaceBookPictureUrl = userInfo.Picture.Data.Url }; user.Kisi = new KullaniciKisi { Unvan = "Doç.Dr.", Ad = facebookUserInfo.FirstName, Soyad = facebookUserInfo.LastName, CinsiyetNo = 1, DogumTarihi = new DateTime(1970, 11, 15) }; KisiyeFacebookFotografiEkle(facebookUserInfo, user); var result = await _userManager.CreateAsync(user, Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 8)); if (!result.Succeeded) { return(Ok(Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Facebook bilgileriyle kullanıcı yaratılamadı!" } }))); } else { mesaj = "Facebook kullanıcısı yaratıldı. Hesabınız onay sürecinde. Lütfen Eposta adresinizi kontrol ediniz."; } } else { bool kayitGerekli = false; if (user.FacebookId == null || user.FacebookId != facebookUserInfo.Id) { //user.Pasif = true; //user.EmailConfirmed = false; if (facebookUserInfo.Gender == "male") { user.Kisi.CinsiyetNo = 1; } else if (facebookUserInfo.Gender == "female") { user.Kisi.CinsiyetNo = 2; } kayitGerekli = true; } var facebookFotograflari = user.Kisi.Fotograflari.Where(f => f.DisKaynakId == "facebook").ToList(); var facebookFotografiYok = facebookFotograflari != null && !facebookFotograflari.Any(fb => fb.Url == facebookUserInfo.Picture.Data.Url); var suankiProfilFotografi = user.Kisi.Fotograflari.SingleOrDefault(f => f.ProfilFotografi); if (suankiProfilFotografi != null) { suankiProfilFotografi.ProfilFotografi = false; kayitGerekli = true; } if (facebookFotografiYok) { KisiyeFacebookFotografiEkle(facebookUserInfo, user); kayitGerekli = true; } if (kayitGerekli) { var degistirmeSonuc = await _userManager.UpdateAsync(user); if (!degistirmeSonuc.Succeeded) { return(Ok(Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "", Tanim = "Facebook bilgileriyle kullanıcı kaydedilemedi!" } }))); } else { mesaj = "Facebook bilgileriyle kullanıcı var olan kullanıcı ilişkilendirildi. Hesabınızı onaylanması gerekli. Lütfen eposta adresinizi kontrol ediniz."; } } } // generate the jwt for the local user... var localUser = await _userManager.KullaniciyiGetirEpostayaGore(facebookUserInfo.Email); if (localUser == null) { return(Ok(Sonuc.Basarisiz(new Hata[] { new Hata { Kod = "Giris Başarısız", Tanim = "Facebook bilgileriyle lokal kullanıcı hesabı yaratılamadı!" } }))); } var girisYapabilirSonuc = await signInManager.CanSignInAsync(localUser); if (girisYapabilirSonuc) { if (!localUser.EmailConfirmed) { //Eposta konfirme etme süreci başlasın } } if (!localUser.Pasif) { //Aktifleştirme süreci başlasın } var jwt = await Tokens.GenerateJwt(_jwtFactory.GenerateClaimsIdentity(localUser), _jwtFactory, localUser.UserName, _jwtOptions); var kullaniciDto = user.ToKullaniciBilgi(); var sonuc = KayitSonuc <object> .IslemTamam(new { tokenString = jwt, kullanici = kullaniciDto }); sonuc.Mesajlar[0] = $"Hoşgeldiniz {kullaniciDto.TamAdi}!"; sonuc.Mesajlar.Add(mesaj); return(Ok(sonuc)); }