public ChangePasswordStatus ResetPassword(int applicationId, IUserBasic userBasic, string newPassword) { string text = this.GenerateSalt(); ValidatePasswordStatus result = ValidatePasswordStatus.Valid; if (!this.IsPasswordValid(newPassword, text, out result)) { return((ChangePasswordStatus)result); } ChangePasswordStatus changePasswordStatus; try { using (IDataStoreContext dataStoreContext = this.DataStore.CreateContext()) { changePasswordStatus = dataStoreContext.wm_Users_SetPassword(userBasic.UserId, this.EncodePassword(newPassword, text, this.PasswordFormat), text, (byte)this.PasswordFormat) == 0 ? ChangePasswordStatus.NoRecordRowAffected : ChangePasswordStatus.Success; } } catch (Exception ex) { _Log.Error("Error at ResetPassword.Users_SetPassword", ex); throw new DataStoreException(ex, true); } if (changePasswordStatus == ChangePasswordStatus.Success) { _Log.InfoFormat("User {0} changed password", userBasic.UserId); } return(changePasswordStatus); }
public ChangePasswordStatus ChangePassword(int applicationId, IUserBasic userBasic, string oldPassword, string newPassword) { wm_User_GetPassword_QueryResult getPasswordResult = null; try { using (IDataStoreContext dataStoreContext = this.DataStore.CreateContext()) { getPasswordResult = dataStoreContext.wm_Users_GetPassword(applicationId, userBasic.UserName, null); } } catch (Exception ex) { _Log.Error("Error at Users_GetPassword", ex); throw new DataStoreException(ex, true); } if (!this.CheckPassword(oldPassword, getPasswordResult.Password, getPasswordResult.PasswordSalt, ((MembershipPasswordFormat)getPasswordResult.PasswordFormat))) { return(ChangePasswordStatus.OldPasswordValidationFailed); } string text = this.GenerateSalt(); ValidatePasswordStatus result = ValidatePasswordStatus.Valid; if (!this.IsPasswordValid(newPassword, text, out result)) { return((ChangePasswordStatus)result); } ChangePasswordStatus changePasswordStatus; try { using (IDataStoreContext dataStoreContext = this.DataStore.CreateContext()) { changePasswordStatus = dataStoreContext.wm_Users_SetPassword(userBasic.UserId, this.EncodePassword(newPassword, text, this.PasswordFormat), text, (byte)this.PasswordFormat) == 0 ? ChangePasswordStatus.NoRecordRowAffected : ChangePasswordStatus.Success; } } catch (Exception ex) { _Log.Error("Error at ChangePassword.Users_SetPassword", ex); throw new DataStoreException(ex, true); } return(changePasswordStatus); }
private bool IsPasswordValid(string password, string salt, out ValidatePasswordStatus validatePasswordStatus) { validatePasswordStatus = ValidatePasswordStatus.Valid; int num = 0; for (int i = 0; i < password.Length; i++) { if (!char.IsLetterOrDigit(password, i)) { num++; } } if (num < this.MinRequiredNonAlphanumericCharacters) { validatePasswordStatus = ValidatePasswordStatus.MinRequiredNonAlphanumericCharactersError; return(false); } if (this.PasswordStrengthRegularExpression.Length > 0 && !Regex.IsMatch(password, this.PasswordStrengthRegularExpression)) { validatePasswordStatus = ValidatePasswordStatus.PasswordStrengthRegularExpression; return(false); } string text = this.EncodePassword(password, salt, this.PasswordFormat); if (text.Length > 128) { validatePasswordStatus = ValidatePasswordStatus.TooLong; return(false); } if (password.Length < this.MinRequiredPasswordLength) { validatePasswordStatus = ValidatePasswordStatus.TooShort; return(false); } return(true); }
public BusinessObjectActionReport <UserCreateStatus> CreateUser(ref IUserBasic user, string password, List <UserRole> roles , UserNameDisplayMode userNameDisplayMode, string firstName, string lastName, Workmate.Components.Contracts.Membership.Gender gender, out Guid uniqueId, int applicationId) { uniqueId = Guid.NewGuid(); UserCreateStatus userCreateStatus = UserCreateStatus.UnknownError; BusinessObjectActionReport <UserCreateStatus> businessObjectActionReport = new BusinessObjectActionReport <UserCreateStatus>(UserCreateStatus.UnknownError); businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(user); if (!businessObjectActionReport.ValidationResult.IsValid) { return(businessObjectActionReport); } string text = this.GenerateSalt(); ValidatePasswordStatus status = ValidatePasswordStatus.Valid; if (!this.IsPasswordValid(password, text, out status)) { businessObjectActionReport.Status = (UserCreateStatus)status; return(businessObjectActionReport); } int userId; int returnValue; DateTime dateCreatedUtc; try { using (IDataStoreContext dataStoreContext = this.DataStore.CreateContext()) { returnValue = dataStoreContext.wm_Users_Insert(applicationId, user.UserName, user.Email, this.EncodePassword(password, text, this.PasswordFormat) , text, (int)this.PasswordFormat, user.AccountStatus, roles.Select(c => c.ToString()).ToList(), user.ProfileImageId, uniqueId, userNameDisplayMode , user.TimeZoneInfoId, firstName, lastName, gender, out userId, out dateCreatedUtc); } } catch (Exception ex) { _Log.Error("Error at Users_Insert", ex); businessObjectActionReport.Status = UserCreateStatus.SqlError; return(businessObjectActionReport); } if (returnValue == 0) { user.UserId = userId; user.LastActivityDateUtc = dateCreatedUtc; user.DateCreatedUtc = dateCreatedUtc; userCreateStatus = UserCreateStatus.Success; } else { switch (returnValue) { case -1: userCreateStatus = UserCreateStatus.UsernameAlreadyExists; break; case -2: userCreateStatus = UserCreateStatus.EmailAlreadyExists; break; default: _Log.Error("Error at Users_Insert, ErrorCode: " + returnValue); userCreateStatus = UserCreateStatus.SqlError; break; } } businessObjectActionReport.Status = userCreateStatus; if (businessObjectActionReport.Status == UserCreateStatus.Success) { _Log.InfoFormat("Successfully created user {0}.", user.UserId); } return(businessObjectActionReport); }