public string Create(UserWrongPasswordPoco poco)
        {
            UserWrongPassword entity = _mapper.Map <UserWrongPassword>(poco);

            _userWrongPassword.InsertOne(entity);
            return(entity.Id);
        }
        public string Create(UserWrongPasswordPoco poco)
        {
            UserWrongPassword entity = _mapper.Map <UserWrongPassword>(poco);

            _context.SaveAsync(entity);

            return(entity.Id);
        }
Example #3
0
        public UserPoco Authenticate(string userId, string password, string loginIP = null)
        {
            var poco = _usersRepository.Find(userId);

            if (poco == null)
            {
                CreateLoginLog(userId, loginIP, true, "Cannot find user.");
                throw new LoginException("Invalid username or password");
            }
            if (VerifyHash(password, poco.PasswordHash))
            {
                if (!poco.IsActivated)
                {
                    CreateLoginLog(userId, loginIP, true, "User activation rquired.");
                    throw new LoginException("User activation rquired.");
                }
                else if (poco.IsLocked)
                {
                    CreateLoginLog(userId, loginIP, true, "Account is locked.");
                    throw new LoginException("Account is locked.");
                }
                CreateLoginLog(userId, loginIP, false, "Success.");
                _userWrongPasswordRepository.Delete(userId);
                return(poco);
            }
            else
            {
                CreateLoginLog(userId, loginIP, true, "Password verification failed.");
                if (poco.IsLocked)
                {
                    throw new LoginException("Your account is locked.");
                }
                else
                {
                    UserWrongPasswordPoco wpPoco = _userWrongPasswordRepository.Find(userId);
                    if (wpPoco != null && wpPoco.FailedCount >= MaxLoginAttempt)
                    {
                        _userWrongPasswordRepository.Delete(userId);
                        _usersRepository.LockUser(userId);
                        _userHistoriesRepository.Create(userId, userId, "Max login attempt reached.");
                        throw new LoginException("Invalid username or password. Your account is locked.");
                    }
                    else
                    {
                        _userWrongPasswordRepository.IncreaseFailedCount(userId);
                        throw new LoginException("Invalid username or password");
                    }
                }
            }
        }