Example #1
0
 public LoginController(
     IUserSessionStore userSessionStore = null,
     IUserStore userStore = null,
     IUserPasswordValidator userPasswordValidator = null)
 {
     _userSessionStore      = userSessionStore ?? new UserSessionStore();
     _userStore             = userStore ?? new UserStore();
     _userPasswordValidator = userPasswordValidator ?? new UserPasswordValidator();
 }
 public ChangePasswordController(
     IChangePasswordRequestValidator changePasswordRequestValidator = null,
     IUserPasswordValidator userPasswordValidator = null,
     IUserStore userStore = null,
     IUserSessionStore userSessionStore = null)
 {
     _changePasswordRequestValidator = changePasswordRequestValidator ?? new ChangePasswordRequestValidator();
     _userPasswordValidator          = userPasswordValidator ?? new UserPasswordValidator();
     _userStore        = userStore ?? new UserStore();
     _userSessionStore = userSessionStore ?? new UserSessionStore();
 }
Example #3
0
        public Result <ServiceResponse> ChangePassword(ChangePasswordRequest request,
                                                       [FromServices] IUserPasswordValidator passwordValidator)
        {
            return(this.InTransaction("Default", uow =>
            {
                if (request is null)
                {
                    throw new ArgumentNullException(nameof(request));
                }

                if (string.IsNullOrEmpty(request.OldPassword))
                {
                    throw new ArgumentNullException("oldPassword");
                }

                if (passwordValidator is null)
                {
                    throw new ArgumentNullException(nameof(passwordValidator));
                }

                var username = User.Identity?.Name;

                if (passwordValidator.Validate(ref username, request.OldPassword) != PasswordValidationResult.Valid)
                {
                    throw new ValidationError("CurrentPasswordMismatch", Texts.Validation.CurrentPasswordMismatch.ToString(Localizer));
                }

                if (request.ConfirmPassword != request.NewPassword)
                {
                    throw new ValidationError("PasswordConfirmMismatch", Localizer.Get("Validation.PasswordConfirm"));
                }

                request.NewPassword = UserRepository.ValidatePassword(request.NewPassword, Localizer);

                string salt = null;
                var hash = UserRepository.GenerateHash(request.NewPassword, ref salt);
                var userId = int.Parse(User.GetIdentifier());

                UserRepository.CheckPublicDemo(userId);

                uow.Connection.UpdateById(new UserRow
                {
                    UserId = userId,
                    PasswordSalt = salt,
                    PasswordHash = hash
                });

                Cache.InvalidateOnCommit(uow, UserRow.Fields);

                return new ServiceResponse();
            }));
        }
 public CreateUserController(
     IUserStore userStore = null,
     IUserSessionStore userSessionStore                     = null,
     IUserPasswordValidator userPasswordValidator           = null,
     ICreateUserRequestValidator createUserRequestValidator = null,
     ISendEmailConfirmation sendEmailConfirmation           = null)
 {
     _userStore                  = userStore ?? new UserStore();
     _userSessionStore           = userSessionStore ?? new UserSessionStore();
     _userPasswordValidator      = userPasswordValidator ?? new UserPasswordValidator();
     _createUserRequestValidator = createUserRequestValidator ?? new CreateUserRequestValidator();
     _sendEmailConfirmation      = sendEmailConfirmation ?? new SendEmailConfirmationController();
 }
Example #5
0
        public Result <ServiceResponse> Login(LoginRequest request,
                                              [FromServices] IUserPasswordValidator passwordValidator,
                                              [FromServices] IUserRetrieveService userRetriever,
                                              [FromServices] IEmailSender emailSender = null)
        {
            return(this.ExecuteMethod(() =>
            {
                if (request is null)
                {
                    throw new ArgumentNullException(nameof(request));
                }

                if (string.IsNullOrEmpty(request.Username))
                {
                    throw new ArgumentNullException("username");
                }

                if (passwordValidator is null)
                {
                    throw new ArgumentNullException(nameof(passwordValidator));
                }

                if (userRetriever is null)
                {
                    throw new ArgumentNullException(nameof(userRetriever));
                }

                var username = request.Username;
                var result = passwordValidator.Validate(ref username, request.Password);
                if (result == PasswordValidationResult.Valid)
                {
                    var principal = UserRetrieveService.CreatePrincipal(userRetriever, username, authType: "Password");
                    HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal)
                    .GetAwaiter().GetResult();
                    return new ServiceResponse();
                }

                throw new ValidationError("AuthenticationError", Texts.Validation.AuthenticationError.ToString(Localizer));
            }));
        }
Example #6
0
 public ChangePasswordRequestValidator(IUserPasswordValidator userPasswordValidator = null)
 {
     _userPasswordValidator = userPasswordValidator ?? new UserPasswordValidator();
 }