示例#1
0
        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))));
            }
        }
示例#3
0
        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));
            }));
        }
示例#4
0
        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..."
                                                       } }));
            }));
        }
示例#5
0
        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);
            }));
        }
示例#6
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ış!"
                                                                      } }));
            }));
        }
示例#7
0
        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);
            }));
        }
示例#8
0
        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))));
            }
        }
示例#10
0
 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);
         }
     }));
 }
示例#11
0
        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!!")));
            }));
        }
示例#12
0
        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);
            }));
        }
示例#13
0
        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));
            }));
        }
示例#14
0
        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));
        }