예제 #1
0
        public async Task<IActionResult> LoginPost(LoginViewModel loginViewModel)
        {
            LoginModel model = Mapper.Map<LoginModel>(loginViewModel);

            var validator = new LoginModelValidator();
            var result = validator.Validate(model);

            if (!result.IsValid)
            {
                ModelState.ApplyValidationFailures(result.Errors);
            }
            else
            {
                var signInResult = await _identityService.LoginAsync(model);

                if (signInResult.Succeeded)
                {
                    if (string.IsNullOrEmpty(loginViewModel.ReturnUrl))
                    {
                        return RedirectToAction("Index", "Home");
                    }
                    else
                    {
                        return Redirect(loginViewModel.ReturnUrl);
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, $"Nie znaleziono użytkownika {loginViewModel.Login}");
                }
            }

            loginViewModel.Password = string.Empty;
            return View(loginViewModel);
        }
예제 #2
0
        public LoginForm()
        {
            InitializeComponent();

            context        = ContextProvider.GetApplicationContext();
            loginValidator = new LoginModelValidator();
        }
 public void DefineValidator()
 {
     var locManager = new Mock<ILocalizationManager>();
     locManager.Setup(
         s => s.GetValidatorTranslationTEST(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
         .Returns("Some test string");
     this.validator = new LoginModelValidator(locManager.Object);
 }
        public void GivenValidate_WhenHavingPasswordLengthEqual8_ThenResultShouldBeValid()
        {
            var loginModel = LoginModelFactory.Default().WithPassword("12345678");
            var validator  = new LoginModelValidator();

            var result = validator.Validate(loginModel);

            result.IsValid.Should().BeTrue();
        }
        public void GivenValidate_WhenHavingPasswordLengthMoreThan60_ThenResultShouldBeInvalid()
        {
            var loginModel = LoginModelFactory.Default().WithPassword(string.Create(61, '1', (colector, input) => colector.Fill(input)));
            var validator  = new LoginModelValidator();

            var result = validator.Validate(loginModel);

            result.IsValid.Should().BeFalse();
            result.Errors.Count.Should().Be(1);
        }
        public void GivenValidate_WhenHavingPasswordLengthLessThan8_ThenResultShouldBeInvalid()
        {
            var loginModel = LoginModelFactory.Default().WithPassword("parola");
            var validator  = new LoginModelValidator();

            var result = validator.Validate(loginModel);

            result.IsValid.Should().BeFalse();
            result.Errors.Should().HaveCount(1);
        }
        public void GivenValidate_WhenHavingAnInvalidEmailAdress_ThenResultShouldBeInvalid()
        {
            var loginModel = LoginModelFactory.Default().WithEmail("florin");
            var validator  = new LoginModelValidator();

            var result = validator.Validate(loginModel);

            result.IsValid.Should().BeFalse();
            result.Errors.Should().HaveCount(1);
        }
        public void GivenValidate_WhenHavingANullPasswordAndEmail_ThenResultShouldBeInvalid()
        {
            var loginModel = LoginModelFactory.Default().WithPassword(null).WithEmail(null);
            var validator  = new LoginModelValidator();

            var result = validator.Validate(loginModel);

            result.IsValid.Should().BeFalse();
            result.Errors.Should().HaveCount(2);
        }
        public void GivenValidate_WhenHavingEmailLengthEqualWith300_ThenResultShouldBeValid()
        {
            var loginModel = LoginModelFactory.Default().WithEmail(string.Create(190, '1', (colector, input) => colector.Fill(input)) + "@gmail.com");
            var validator  = new LoginModelValidator();

            var result = validator.Validate(loginModel);

            result.IsValid.Should().BeTrue();
            result.Errors.Should().HaveCount(0);
        }
        public void GivenValidate_WhenHavingAValidInput_ThenResultShouldBeValid()
        {
            var loginModel = LoginModelFactory.Default();
            var validator  = new LoginModelValidator();

            var result = validator.Validate(loginModel);

            result.IsValid.Should().BeTrue();
            result.Errors.Should().BeEmpty();
        }
예제 #11
0
        public async Task <IActionResult> Login([FromBody] LoginModel model)
        {
            try
            {
                var validator = new LoginModelValidator();
                if (model == null || !validator.Validate(model))
                {
                    return(BadRequest());
                }

                var user = await userService.GetWhere(new { Email = model.Email });

                if (user == null)
                {
                    return(NotFound());
                }

                if (!BCrypt.Net.BCrypt.Verify(model.Password, user.Password))
                {
                    return(Unauthorized());
                }

                if (user.DeactivatedOn != null)
                {
                    return(Forbid());
                }

                var tokenManager = new JwtManager(config, user.Email, user.Id.ToString(CultureInfo.InvariantCulture));
                if (user.Staff)
                {
                    tokenManager.Claim(ClaimTypes.Role, "Staff");
                }

                tokenManager.Build();

                user.Email    = null;
                user.Password = null;
                return(Ok(new
                {
                    Token = tokenManager.Token.Value,
                    TokenValidTo = tokenManager.Token.ValidTo,
                    User = user
                }));
            }
            catch (Exception e)
            {
                logger.LogError(e, e.Message);
                return(StatusCode(500));
            }
        }
예제 #12
0
        public LoginViewModel()
        {
            _userClient = new UserClient();
            _validator  = new LoginModelValidator();

            RegisterCommand       = new RelayCommand(DoRegister);
            LoginCommand          = new RelayCommand <object>(DoLogin);
            ForgotPasswordCommand = new RelayCommand(DoForgotPassword);
            ResendCommand         = new RelayCommand(DoResend);

            if (IsLoaded)
            {
                OnLoad(this, null);
            }
            else
            {
                Loaded += OnLoad;
            }
        }
        public async Task <IActionResult> Login([FromBody] LoginModel model)
        {
            var validationResult = new LoginModelValidator().ValidateRequest(model);

            if (validationResult != null)
            {
                return(ValidationProblem(validationResult));
            }

            var result = await _service.LogIn(model);

            if (string.IsNullOrWhiteSpace(result))
            {
                return(Unauthorized());
            }
            return(Ok(new
            {
                token = result
            }));
        }
 public SignInModel()
 {
     Validator = new LoginModelValidator();
 }
        public async Task <ServiceResponse <ProfileViewModel> > Login([FromBody] LoginModel model)
        {
            var response = new ServiceResponse <ProfileViewModel>();

            try
            {
                var validation = new LoginModelValidator();
                var results    = validation.Validate(model);

                response.ErrorMessages = results.Errors.ToList();

                if (!response.Successful)
                {
                    return(response);
                }

                await this._signInManager.SignOutAsync();

                var result = await this._signInManager.PasswordSignInAsync(
                    model.Email,
                    model.Password,
                    model.RememberMe,
                    false);

                if (!result.Succeeded)
                {
                    response.ErrorMessages.Add(
                        result.IsLockedOut
                            ? new ValidationFailure(model.Email, $"User {model.Email} account locked out.")
                            : new ValidationFailure(model.Email, "Invalid login attempt."));
                }
                else
                {
                    var user = await this._userManager.FindByEmailAsync(model.Email);

                    if (!user.EmailConfirmed)
                    {
                        response.ErrorMessages.Add(
                            new ValidationFailure(model.Email, "your login account is not verified yet."));
                    }
                    else if (user.Disabled)
                    {
                        response.ErrorMessages.Add(
                            new ValidationFailure(
                                model.Email,
                                "Your profile has been disabled please contact administration."));
                    }
                    else
                    {
                        response = new ServiceResponse <ProfileViewModel>
                        {
                            Data = new ProfileViewModel
                            {
                                Email     = model.Email,
                                Id        = user.Id,
                                FirstName = user.FirstName,
                                LastName  = user.LastName,
                                Token     = await this._commonService.GenerateToken(
                                    model.Email,
                                    model.Password)
                            }
                        }
                    };
                }
            }
            catch (Exception ex)
            {
                response.ErrorMessages.Add(new ValidationFailure(model.Email, "Invalid login attempt."));
            }

            return(response);
        }