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ı);
        }
Esempio 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ı);
        }
Esempio n. 4
0
        public virtual ActionResult Giriş(GirişModel model, string dönenUrl, bool captchaDoğrulandı)
        {
            /*
             * //CAPTCHA doğrula
             * if (_captchaSettings.Enabled && _captchaSettings.ShowOnLoginPage && !captchaValid)
             * {
             *  ModelState.AddModelError("", _captchaSettings.GetWrongCaptchaMessage(_localizationService));
             * }
             */
            if (ModelState.IsValid)
            {
                if (_kullanıcıAyarları.KullanıcıAdlarıEtkin && model.KullanıcıAdı != null)
                {
                    model.KullanıcıAdı = model.KullanıcıAdı.Trim();
                }
                var girişSonucu =
                    _kullanıcıKayıtServisi.KullanıcıDoğrula(
                        _kullanıcıAyarları.KullanıcıAdlarıEtkin ? model.KullanıcıAdı : model.Email, model.Şifre);
                switch (girişSonucu)
                {
                case KullanıcıGirişSonuçları.Başarılı:
                {
                    var kullanıcı = _kullanıcıAyarları.KullanıcıAdlarıEtkin
                                ? _kullanıcıServisi.KullanıcıAlSistemAdı(model.KullanıcıAdı)
                                : _kullanıcıServisi.KullanıcıAlEmail(model.Email);

                    //yeni kullanıcı olarak giriş yapıldı
                    _kimlikDoğrulamaServisi.Giriş(kullanıcı, model.BeniHatırla);

                    //olay
                    _olayYayınlayıcı.Yayınla(new KullanıcıBağlandıOlayı(kullanıcı));

                    //log ekle
                    //_kullanıcıAktiviteServisi.AktiviteEkle(kullanıcı, "GenelSite.Login", _localizationService.GetResource("ActivityLog.PublicStore.Login"));

                    if (String.IsNullOrEmpty(dönenUrl) || !Url.IsLocalUrl(dönenUrl))
                    {
                        return(RedirectToRoute("HomePage"));
                    }

                    return(Redirect(dönenUrl));
                }

                case KullanıcıGirişSonuçları.KullanıcıMevcutDeğil:
                    ModelState.AddModelError("", "Kullanıcı bulunamadı");
                    break;

                case KullanıcıGirişSonuçları.Silindi:
                    ModelState.AddModelError("", "Kullanıcı silindi");
                    break;

                case KullanıcıGirişSonuçları.AktifDeğil:
                    ModelState.AddModelError("", "Kullanıcı aktifleştirilmedi");
                    break;

                case KullanıcıGirişSonuçları.KayıtlıDeğil:
                    ModelState.AddModelError("", "Kullanıcı henüz kayıtlı değil");
                    break;

                case KullanıcıGirişSonuçları.Kilitlendi:
                    ModelState.AddModelError("", "Kullanıcı kilitlendi");
                    break;

                case KullanıcıGirişSonuçları.HatalıŞifre:
                default:
                    ModelState.AddModelError("", "Hatalı şifre");
                    break;
                }
            }

            //If we got this far, something failed, redisplay form
            model = _kullanıcıModelFabrikası.GirişModelHazırla();
            return(View(model));
        }
        protected virtual IActionResult RegisterNewUser(HariciYetkilendirmeParametreleri parameters, string returnUrl)
        {
            //check whether the specified email has been already registered
            if (_kullanıcıServisi.KullanıcıAlEmail(parameters.Email) != null)
            {
                var alreadyExistsError = "E-Mail adresi zaten mevcut";
                return(ErrorAuthentication(new[] { alreadyExistsError }, returnUrl));
            }

            var registrationIsApproved = _kullanıcıAyarları.KullanıcıKayıtTipi == KullanıcıKayıtTipi.Standart ||
                                         (_kullanıcıAyarları.KullanıcıKayıtTipi == KullanıcıKayıtTipi.EmailDoğrulaması && !_hariciYetkilendirmeAyarları.EmailDoğrulamasıGerekli);

            var registrationRequest = new KullanıcıKayıtİsteği(_workContext.MevcutKullanıcı,
                                                               parameters.Email, parameters.Email,
                                                               GenelYardımcı.RastgeleOndalıklıÜret(20),
                                                               ŞifreFormatı.Temiz,
                                                               _siteContext.MevcutSite.Id,
                                                               registrationIsApproved);

            var registrationResult = _kullanıcıKayıtServisi.KullanıcıKaydet(registrationRequest);

            if (!registrationResult.Başarılı)
            {
                return(ErrorAuthentication(registrationResult.Hatalar, returnUrl));
            }

            _olayYayınlayıcı.Yayınla(new KullanıcıHariciOlarakOtomatikKaydedildi(_workContext.MevcutKullanıcı, parameters));

            _olayYayınlayıcı.Yayınla(new KullanıcıKaydolduOlayı(_workContext.MevcutKullanıcı));

            if (_kullanıcıAyarları.YeniKullanıcıBildirimi)
            {
                //_workflowMessageService.SendCustomerRegisteredNotificationMessage(_workContext.MevcutKullanıcı, _localizationSettings.DefaultAdminLanguageId);

                HariciHesabıKullanıcıylaİlişkilendir(_workContext.MevcutKullanıcı, parameters);
            }

            //yetkilendir
            if (registrationIsApproved)
            {
                _yetkilendirmeServisi.Giriş(_workContext.MevcutKullanıcı, false);
                //_workflowMessageService.SendCustomerWelcomeMessage(_workContext.MevcutKullanıcı, _workContext.WorkingLanguage.Id);

                return(new RedirectToRouteResult("RegisterResult", new { resultId = (int)KullanıcıKayıtTipi.Standart }));
            }

            //registration is succeeded but isn't activated
            if (_kullanıcıAyarları.KullanıcıKayıtTipi == KullanıcıKayıtTipi.EmailDoğrulaması)
            {
                //email validation message
                _genelÖznitelikServisi.ÖznitelikKaydet(_workContext.MevcutKullanıcı, SistemKullanıcıÖznitelikAdları.HesapAktifleştirmeKodu, Guid.NewGuid().ToString());
                //_workflowMessageService.SendCustomerEmailValidationMessage(_workContext.MevcutKullanıcı, _workContext.WorkingLanguage.Id);

                return(new RedirectToRouteResult("RegisterResult", new { resultId = (int)KullanıcıKayıtTipi.EmailDoğrulaması }));
            }

            if (_kullanıcıAyarları.KullanıcıKayıtTipi == KullanıcıKayıtTipi.YöneticiOnayı)
            {
                return(new RedirectToRouteResult("RegisterResult", new { resultId = (int)KullanıcıKayıtTipi.YöneticiOnayı }));
            }

            return(ErrorAuthentication(new[] { "Error on registration" }, returnUrl));
        }