Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }