Example #1
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));
            }));
        }
Example #2
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ış!"
                                                                      } }));
            }));
        }
        private async Task <IActionResult> TeklifiDondur(int teklifEdenNo, int teklifAlanNo, int kullaniciNo)
        {
            var teklif = await arkadaslikRepo.TeklifiBulAsync(teklifEdenNo, teklifAlanNo);

            if (teklif != null)
            {
                var teklifDto = teklif.ToDto();
                TeklifinArkadasiniBelirle(kullaniciNo, teklifDto);
                return(Ok(KayitSonuc <ArkadaslarimListeDto> .IslemTamam(teklifDto)));
            }
            return(BadRequest("Teklif bulunamadı!"));
        }
Example #4
0
 public async Task <IActionResult> GetSoruById(int id)
 {
     return(await KullaniciVarsaCalistir <IActionResult>(async() =>
     {
         var soru = await soruStore.BulAsync(id);
         if (soru == null)
         {
             return NotFound("Soru bulunamadı");
         }
         var sonuc = KayitSonuc <SoruDegistirDto> .IslemTamam(soru.ToSoruDegistirDto());
         return Ok(sonuc);
     }));
 }
Example #5
0
        public async Task <IActionResult> SoruKaydet([FromBody] SoruDegistirDto degisecekSoru)
        {
            return(await KullaniciVarsaCalistir <IActionResult>(async() =>
            {
                var kullanici = await kullaniciYonetici.FindByIdAsync("1");
                if (kullanici == null || !kullanici.EmailConfirmed || kullanici.Pasif)
                {
                    throw new BadRequestError("Kullanıcı bilgisi yanlış");
                }

                var veritabanindakiKayit = await soruStore.DegistirAsync(degisecekSoru);
                var sonuc = await soruStore.KaydetAsync();
                if (sonuc)
                {
                    var kayitSonuc = KayitSonuc <SoruListeDto> .IslemTamam(veritabanindakiKayit.ToSoruListeDto());

                    return Ok(kayitSonuc);
                }
                throw new InternalServerError("Soru yaratılamadı!");
            }));
        }
Example #6
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));
            }));
        }
Example #7
0
 public async Task <IActionResult> YeniSoru([FromBody] SoruYaratDto yeniSoruDto)
 {
     return(await KullaniciVarsaCalistir <IActionResult>(async() =>
     {
         var soru = await soruStore.YaratAsync(yeniSoruDto);
         try
         {
             var sonuc = await soruStore.KaydetAsync();
             if (sonuc)
             {
                 var dbSoru = await soruStore.BulAsync(soru.SoruId);
                 //return CreatedAtRoute("SoruListeOku", new { id = soru.SoruId }, soru);
                 var kayitSonuc = KayitSonuc <SoruListeDto> .IslemTamam(dbSoru.ToSoruListeDto());
                 return Ok(kayitSonuc);
             }
         }
         catch (Exception e)
         {
             throw new InternalServerError("Soru yaratılamadı!");
         }
         throw new InternalServerError("Soru yaratılamadı!");
     }));
 }
        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));
        }