Ejemplo n.º 1
0
        public virtual KullanıcıGirişSonuçları KullanıcıDoğrula(string kullanıcıAdıVeyaEmail, string şifre)
        {
            var kullanıcı = _kullanıcıAyarları.KullanıcıAdlarıEtkin ?
                            _kullanıcıServisi.KullanıcıAlKullanıcıAdı(kullanıcıAdıVeyaEmail) :
                            _kullanıcıServisi.KullanıcıAlEmail(kullanıcıAdıVeyaEmail);

            if (kullanıcı == null)
            {
                return(KullanıcıGirişSonuçları.KullanıcıMevcutDeğil);
            }
            if (kullanıcı.Silindi)
            {
                return(KullanıcıGirişSonuçları.Silindi);
            }
            if (!kullanıcı.Aktif)
            {
                return(KullanıcıGirişSonuçları.AktifDeğil);
            }
            //sadece kayıtlı olanlar girebilir
            if (!kullanıcı.IsRegistered())
            {
                return(KullanıcıGirişSonuçları.KayıtlıDeğil);
            }
            //check whether a kullanıcı is locked out
            if (kullanıcı.ŞuTarihdenBeriGirişYapamıyor.HasValue && kullanıcı.ŞuTarihdenBeriGirişYapamıyor.Value > DateTime.UtcNow)
            {
                return(KullanıcıGirişSonuçları.Kilitlendi);
            }

            if (!ŞifreUyuşturması(_kullanıcıServisi.MevcutŞifreAl(kullanıcı.Id), şifre))
            {
                //yanlış şifre
                kullanıcı.HatalıGirişSayısı++;
                if (_kullanıcıAyarları.HatalıŞifreDenemesi > 0 &&
                    kullanıcı.HatalıGirişSayısı >= _kullanıcıAyarları.HatalıŞifreDenemesi)
                {
                    //kilitle
                    kullanıcı.ŞuTarihdenBeriGirişYapamıyor = DateTime.UtcNow.AddMinutes(_kullanıcıAyarları.HatalıŞifredeKilitDakikası);
                    //sayacı sıfırla
                    kullanıcı.HatalıGirişSayısı = 0;
                }
                _kullanıcıServisi.KullanıcıGüncelle(kullanıcı);

                return(KullanıcıGirişSonuçları.HatalıŞifre);
            }

            //giriş detaylarını güncelle
            kullanıcı.HatalıGirişSayısı            = 0;
            kullanıcı.ŞuTarihdenBeriGirişYapamıyor = null;
            kullanıcı.GirişGerekli   = false;
            kullanıcı.SonGirişTarihi = DateTime.UtcNow;
            _kullanıcıServisi.KullanıcıGüncelle(kullanıcı);

            return(KullanıcıGirişSonuçları.Başarılı);
        }
Ejemplo n.º 2
0
        protected virtual Kullanıcı KimliğiDoğrulananKullanıcıAlBilet(FormsAuthenticationTicket bilet)
        {
            if (bilet == null)
            {
                throw new ArgumentNullException("ticket");
            }

            var kullanıcıAdıVeyaEmail = bilet.UserData;

            if (String.IsNullOrWhiteSpace(kullanıcıAdıVeyaEmail))
            {
                return(null);
            }
            var kullanıcı = _kulanıcıAyarları.KullanıcıAdlarıEtkin
                ? _kullanıcıServisi.KullanıcıAlKullanıcıAdı(kullanıcıAdıVeyaEmail)
                : _kullanıcıServisi.KullanıcıAlEmail(kullanıcıAdıVeyaEmail);

            return(kullanıcı);
        }
        public virtual Kullanıcı KimliğiDoğrulananKullanıcı()
        {
            if (_önebellekKullanıcı != null)
            {
                return(_önebellekKullanıcı);
            }

            var authenticateResult = _httpContextAccessor.HttpContext.AuthenticateAsync(ÇerezYetkilendirmeVarsayılanları.AuthenticationScheme).Result;

            if (!authenticateResult.Succeeded)
            {
                return(null);
            }

            Kullanıcı kullanıcı = null;

            if (_kullanıcıAyarları.KullanıcıAdlarıEtkin)
            {
                var usernameClaim = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name &&
                                                                           claim.Issuer.Equals(ÇerezYetkilendirmeVarsayılanları.ClaimsIssuer, StringComparison.InvariantCultureIgnoreCase));
                if (usernameClaim != null)
                {
                    kullanıcı = _kullanıcıServisi.KullanıcıAlKullanıcıAdı(usernameClaim.Value);
                }
            }
            else
            {
                var emailClaim = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Email &&
                                                                        claim.Issuer.Equals(ÇerezYetkilendirmeVarsayılanları.ClaimsIssuer, StringComparison.InvariantCultureIgnoreCase));
                if (emailClaim != null)
                {
                    kullanıcı = _kullanıcıServisi.KullanıcıAlEmail(emailClaim.Value);
                }
            }
            if (kullanıcı == null || !kullanıcı.Aktif || kullanıcı.GirişGerekli || kullanıcı.Silindi || !kullanıcı.IsRegistered())
            {
                return(null);
            }

            _önebellekKullanıcı = kullanıcı;

            return(_önebellekKullanıcı);
        }
Ejemplo n.º 4
0
        public virtual ActionResult Ekle(KullanıcıModel model, bool düzenlemeyeDevam, FormCollection form)
        {
            if (!_izinServisi.YetkiVer(StandartİzinSağlayıcı.KullanıcılarıYönet))
            {
                return(ErişimEngellendiView());
            }

            if (!String.IsNullOrWhiteSpace(model.Email))
            {
                var user2 = _kullanıcıServisi.KullanıcıAlEmail(model.Email);
                if (user2 != null)
                {
                    ModelState.AddModelError("", "Email zaten kayıtlı");
                }
            }
            if (!String.IsNullOrWhiteSpace(model.KullanıcıAdı) & _kullanıcıAyarları.KullanıcıAdlarıEtkin)
            {
                var user2 = _kullanıcıServisi.KullanıcıAlKullanıcıAdı(model.KullanıcıAdı);
                if (user2 != null)
                {
                    ModelState.AddModelError("", "Kullanıcı adı zaten alındı");
                }
            }

            //kullanıcı rolü doğrula
            var tümKullanıcıRolleri  = _kullanıcıServisi.TümKullanıcıRolleriniAl(true);
            var yeniKullanıcıRolleri = new List <KullanıcıRolü>();

            foreach (var kullanıcıRolü in tümKullanıcıRolleri)
            {
                if (model.SeçiliKullanıcıRolIdleri.Contains(kullanıcıRolü.Id))
                {
                    yeniKullanıcıRolleri.Add(kullanıcıRolü);
                }
            }
            var kullanıcıRolüHatası = KullanıcıRolüDoğrula(yeniKullanıcıRolleri);

            if (!String.IsNullOrEmpty(kullanıcıRolüHatası))
            {
                ModelState.AddModelError("", kullanıcıRolüHatası);
                HataBildirimi(kullanıcıRolüHatası, false);
            }

            //email adresini doğrula
            if (yeniKullanıcıRolleri.Any() && yeniKullanıcıRolleri.FirstOrDefault(c => c.SistemAdı == SistemKullanıcıRolAdları.Kayıtlı) != null && !GenelYardımcı.GeçerliMail(model.Email))
            {
                ModelState.AddModelError("", "Müşterinin 'Kayıtlı' rolü olması için geçerli e-posta gereklidir.");
                HataBildirimi("Müşterinin 'Kayıtlı' rolü olması için geçerli e-posta gereklidir", false);
            }

            //özel kullanıcı özniteliği

            /*
             * var kullanıcıAttributesXml = ParseCustomCustomerAttributes(form);
             * if (newCustomerRoles.Any() && newCustomerRoles.FirstOrDefault(c => c.SystemName == SystemCustomerRoleNames.Registered) != null)
             * {
             *  var kullanıcıAttributeWarnings = _kullanıcıAttributeParser.GetAttributeWarnings(kullanıcıAttributesXml);
             *  foreach (var error in kullanıcıAttributeWarnings)
             *  {
             *      ModelState.AddModelError("", error);
             *  }
             * }
             */
            if (ModelState.IsValid)
            {
                var kullanıcı = new Kullanıcı
                {
                    KullanıcıGuid        = Guid.NewGuid(),
                    Email                = model.Email,
                    KullanıcıAdı         = model.KullanıcıAdı,
                    AdminYorumu          = model.AdminYorumu,
                    Aktif                = model.Aktif,
                    ŞuTarihdeOluşturuldu = DateTime.UtcNow,
                    SonİşlemTarihi       = DateTime.UtcNow,
                    KayıtOlduSiteId      = _siteContext.MevcutSite.Id
                };
                _kullanıcıServisi.KullanıcıEkle(kullanıcı);

                //form alanları
                if (_kullanıcıAyarları.CinsiyetEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Cinsiyet, model.Cinsiyet);
                }
                _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Adı, model.Adı);
                _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Soyadı, model.Soyadı);
                if (_kullanıcıAyarları.DoğumTarihiEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.DoğumTarihi, model.DoğumGünü);
                }
                if (_kullanıcıAyarları.ŞirketEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Şirket, model.Şirket);
                }
                if (_kullanıcıAyarları.SokakAdresiEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.SokakAdresi1, model.SokakAdresi);
                }
                if (_kullanıcıAyarları.SokakAdresi2Etkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.SokakAdresi2, model.SokakAdresi2);
                }
                if (_kullanıcıAyarları.PostaKoduEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.PostaKodu, model.PostaKodu);
                }
                if (_kullanıcıAyarları.ŞehirEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Şehir, model.Şehir);
                }
                if (_kullanıcıAyarları.ÜlkeEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.ÜlkeId, model.ÜlkeId);
                }
                if (_kullanıcıAyarları.TelEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Tel, model.Tel);
                }
                if (_kullanıcıAyarları.FaksEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Fax, model.Faks);
                }

                //özel kullanıcı öznitelikleri
                //_genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.ÖzelKullanıcıÖznitelikleri, kullanıcıÖznitelikXml);


                //abonelik kaydı
                if (!String.IsNullOrEmpty(kullanıcı.Email))
                {
                    var tümSiteler = _siteServisi.TümSiteler();
                    foreach (var site in tümSiteler)
                    {
                        var bültenAboneliği = _bültenAbonelikServisi
                                              .BültenAboneliğiAlEmailVeSiteId(kullanıcı.Email, site.Id);
                        if (model.SeçiliAbonleikKayıtları != null &&
                            model.SeçiliAbonleikKayıtları.Contains(site.Id))
                        {
                            //abone olundu
                            if (bültenAboneliği == null)
                            {
                                _bültenAbonelikServisi.BültenAboneliğiEkle(new BültenAboneliği
                                {
                                    BültenAboneliğiGuid = Guid.NewGuid(),
                                    Email             = kullanıcı.Email,
                                    Aktif             = true,
                                    SiteId            = site.Id,
                                    OluşturulmaTarihi = DateTime.UtcNow
                                });
                            }
                        }
                        else
                        {
                            //abone olunmadı
                            if (bültenAboneliği != null)
                            {
                                _bültenAbonelikServisi.BültenAboneliğiSil(bültenAboneliği);
                            }
                        }
                    }
                }

                //şifre
                if (!String.IsNullOrWhiteSpace(model.Şifre))
                {
                    var şifreİsteğiniDeğiştir = new ŞifreDeğiştirmeİsteği(model.Email, false, _kullanıcıAyarları.VarsayılanŞifreFormatı, model.Şifre);
                    var şifreDeğiştiSonucu    = _kullanıcıKayıtServisi.ŞifreDeğiştir(şifreİsteğiniDeğiştir);
                    if (!şifreDeğiştiSonucu.Başarılı)
                    {
                        foreach (var şifreDeğiştirmeHatası in şifreDeğiştiSonucu.Hatalar)
                        {
                            HataBildirimi(şifreDeğiştirmeHatası);
                        }
                    }
                }

                //kullanıcı rolleri
                foreach (var kullanıcıRolü in yeniKullanıcıRolleri)
                {
                    //Yönetici olmadığından emin ol
                    if (kullanıcıRolü.SistemAdı == SistemKullanıcıRolAdları.Yönetici &&
                        !_workContext.MevcutKullanıcı.Yönetici())
                    {
                        continue;
                    }

                    kullanıcı.KullanıcıRolleri.Add(kullanıcıRolü);
                }
                _kullanıcıServisi.KullanıcıGüncelle(kullanıcı);

                //işlem kaydı
                _kullanıcıİşlemServisi.İşlemEkle("YeniKullanıcı", "Yeni kullanıcı eklendi", kullanıcı.Id);

                BaşarılıBildirimi("Kullanıcı Eklendi");

                if (düzenlemeyeDevam)
                {
                    //seçili tab
                    SeçiliTabKaydet();

                    return(RedirectToAction("Düzenli", new { id = kullanıcı.Id }));
                }
                return(RedirectToAction("Liste"));
            }

            //sorun olduysa form yeniden doldur
            KullanıcıModelHazırla(model, null, true);
            return(View(model));
        }