Ejemplo n.º 1
0
        public void ForgottenPassword(ForgottenPasswordModel model)
        {
            // Validate supplied reset password info
            _authenticationValidator.ValidateForgottenPassword(model);

            // Get reset password token
            TimeSpan expiryTimeSpan     = _authenticationConfigurationService.GetForgottenPasswordExpiryTimeSpan(model.TenantId);
            Token    resetPasswordToken = _securityService.CreateToken(expiryTimeSpan);

            // Get user
            string modelEmail = model.Email.Trim().ToLower();
            User   user       = _userRepository.ReadUserByEmail(model.TenantId, modelEmail);

            // Sets a user's reset password token in preparation for a reset password action
            user.ResetPasswordTokenValue  = resetPasswordToken.Value.ToString();
            user.ResetPasswordTokenExpiry = resetPasswordToken.Expiry;

            // Update user
            _userRepository.UpdateUser(user);

            // Get details of email that will be sent to user requesting password reset
            Email email = _authenticationConfigurationService.GetForgottenPasswordEmail(Web, Domain, user.Email, user.Alias, resetPasswordToken);

            // Send forgotten password email to user
            _emailService.SendEmail(email);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Submits form.
        /// </summary>
        /// <param name="form">View model containing form definition and submitted values.</param>
        /// <returns>Result of form post.</returns>
        public FormResult PostForm(Form form)
        {
            try
            {
                // Get website identifier
                long tenantId = _authenticationService.TenantId;

                // Get new profile details from form values
                ForgottenPasswordModel model = new ForgottenPasswordModel
                {
                    Email    = ((TextField)form.Fields["email"]).Value,
                    TenantId = tenantId
                };

                // Initiate password reset
                _authenticationService.ForgottenPassword(model);

                // Return form result with no errors
                return(_formHelperService.GetFormResult());
            }
            catch (ValidationErrorException ex)
            {
                // Return form result containing errors
                return(_formHelperService.GetFormResultWithValidationErrors(ex.Errors));
            }
            catch (Exception)
            {
                // Return form result containing unexpected error message
                return(_formHelperService.GetFormResultWithErrorMessage(ApplicationResource.UnexpectedErrorMessage));
            }
        }
        /// <summary>
        /// Validates forgotten password action.
        /// </summary>
        /// <param name="model">Identifies user performing the forgotten password action.</param>
        /// <param name="keyPrefix">Validation key prefix.</param>
        public void ValidateForgottenPassword(ForgottenPasswordModel model, string keyPrefix = null)
        {
            // Check that email address correctly supplied
            _modelValidator.Validate(model, keyPrefix);

            // Validate user
            User user = _userRepository.ReadUserByEmail(model.TenantId, model.Email.Trim().ToLower());

            if (user == null)
            {
                throw new ValidationErrorException(new ValidationError(null, AuthenticationResource.ForgottenPasswordUserNotFoundMessage, keyPrefix));
            }
            if (!user.Confirmed)
            {
                throw new ValidationErrorException(new ValidationError(null, AuthenticationResource.ForgottenPasswordUserNotConfirmedMessage, keyPrefix));
            }
            if (!user.Enabled)
            {
                throw new ValidationErrorException(new ValidationError(null, AuthenticationResource.ForgottenPasswordUserDisabledMessage, keyPrefix));
            }
        }