Exemplo n.º 1
0
        public Boolean ValidateUser(string userName, string password)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var linqMetaData = new LinqMetaData(adapter);
                var userLogin    = linqMetaData.UserLogin.Where(u => u.UserName == userName && u.IsActive).SingleOrDefault();

                if (userLogin == null)
                {
                    return(false);
                }

                if (userLogin.IsLocked) // The 1 Hour Locking period check
                {
                    if (userLogin.LastLoginAttemptAt == null)
                    {
                        return(false);
                    }
                    if (userLogin.LastLoginAttemptAt.Value.AddHours(1) > DateTime.Now)
                    {
                        return(false);
                    }
                }

                if (userLogin.LastLoginAttemptAt != null && userLogin.LastLoginAttemptAt.Value.AddHours(1) < DateTime.Now) // Recycling data if login attempt was an hour back
                {
                    userLogin.IsLocked           = false;
                    userLogin.LastLoginAttemptAt = null;
                    userLogin.LoginAttempts      = 0;
                    adapter.SaveEntity(userLogin, true);
                }

                return(_oneWayHashingService.Validate(password, new SecureHash(userLogin.Password, userLogin.Salt)));
            }
        }
Exemplo n.º 2
0
        public bool IsPasswordRepeated(long userLoginId, string password)
        {
            var countString = _configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.PreviousPasswordNonRepetitionCount);
            var count       = Convert.ToInt32(countString);

            var previousPasswordList = _passwordChangelogRepository.GetOldPasswordList(userLoginId);

            if (previousPasswordList == null || !previousPasswordList.Any())
            {
                return(false);
            }
            var isPasswordRepeated = false;

            if (previousPasswordList.Count() >= count)
            {
                previousPasswordList = previousPasswordList.OrderByDescending(x => x.Sequence).Take(count);
            }
            foreach (var passwordChangelog in previousPasswordList)
            {
                if (!_oneWayHashingService.Validate(password, new SecureHash(passwordChangelog.Password, passwordChangelog.Salt)))
                {
                    continue;
                }
                isPasswordRepeated = true; break;
            }
            return(isPasswordRepeated);
        }