public function authenticate($credentials, $remember = false, $login = true)
{
$response = $this->fireEvent('sentinel.authenticating', $credentials, true);
if ($response === false) {
return false;
}
if ($credentials instanceof UserInterface) {
$user = $credentials;
} else {
$user = $this->users->findByCredentials($credentials);
$valid = $user !== null ? $this->users->validateCredentials($user, $credentials) : false;
if ($user === null || $valid === false) {
$this->cycleCheckpoints('fail', $user, false);
return false;
}
}
if (!$this->cycleCheckpoints('login', $user)) {
return false;
}
if ($login === true) {
$method = $remember === true ? 'loginAndRemember' : 'login';
if (!($user = $this->{$method}($user))) {
return false;
}
}
$this->fireEvent('sentinel.authenticated', $user);
return $this->user = $user;
}