protected function authenticate($identifier, $password, $force = false)
	{
		$user = $this->userRepository->getByIdentifier($identifier);

		if($user !== false)
		{
			if($this->options['throttling']['enabled'] && $user->isLocked())
			{
				return Gatekeeper::LOGIN_LOCKED;
			}

			if($force || $user->validatePassword($password))
			{
				if(!$user->isActivated())
				{
					return Gatekeeper::LOGIN_ACTIVATING;
				}

				if($user->isBanned())
				{
					return Gatekeeper::LOGIN_BANNED;
				}

				if($this->options['throttling']['enabled'])
				{
					$user->resetThrottle();
				}

				$this->user = $user;

				return true;
			}
			else
			{
				if($this->options['throttling']['enabled'])
				{
					$user->throttle($this->options['throttling']['max_attempts'], $this->options['throttling']['lock_time']);
				}
			}
		}

		return Gatekeeper::LOGIN_INCORRECT;
	}