continuing to refactor auth remembrance.
This commit is contained in:
parent
e6f84bffd4
commit
1b057c2854
|
@ -2,6 +2,23 @@
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Authentication Username
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
} This option should be set to the "username" property of your users.
|
||||||
|
| Typically, this will be set to "email" or "username".
|
||||||
|
|
|
||||||
|
| The value of this property will be used by the "attempt" closure when
|
||||||
|
| searching for users by their username. It will also be used when the
|
||||||
|
| user is set to be "remembered", as the username is embedded into the
|
||||||
|
| encrypted cookie and is used to verify the user's identity.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'username' => 'email',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Retrieve The Current User
|
| Retrieve The Current User
|
||||||
|
@ -43,9 +60,9 @@
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'attempt' => function($username, $password)
|
'attempt' => function($username, $password, $config)
|
||||||
{
|
{
|
||||||
if ( ! is_null($user = User::where('email', '=', $username)->first()))
|
if ( ! is_null($user = User::where($config['username'], '=', $username)->first()))
|
||||||
{
|
{
|
||||||
if (Hasher::check($password, $user->password)) return $user;
|
if (Hasher::check($password, $user->password)) return $user;
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,18 +65,38 @@ public static function user()
|
||||||
// cookie value by the "remember" method.
|
// cookie value by the "remember" method.
|
||||||
if (is_null(static::$user) and ! is_null($cookie = Cookie::get(Auth::remember_key)))
|
if (is_null(static::$user) and ! is_null($cookie = Cookie::get(Auth::remember_key)))
|
||||||
{
|
{
|
||||||
// The decrypted value of the remember cookie should look like {id}|{random}.
|
static::$user = static::recall($cookie);
|
||||||
// We will extract out the ID and pass it to the "user" closure to attempt
|
|
||||||
// to login the user. If a user is returned, their ID will be stored in
|
|
||||||
// the session like normal and they will be considered logged in.
|
|
||||||
$id = substr(Crypter::decrypt($cookie), 0, strpos($cookie, '|'));
|
|
||||||
|
|
||||||
if ( ! is_null($user = call_user_func(Config::get('auth.user'), $id))) static::login($user);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return static::$user;
|
return static::$user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempt to login a user based on a long-lived "remember me" cookie.
|
||||||
|
*
|
||||||
|
* @param string $cookie
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
protected static function recall($cookie)
|
||||||
|
{
|
||||||
|
// The decrypted value of the remember cookie contains the ID and username.
|
||||||
|
// We will extract them out and pass the ID to the "user" closure to attempt
|
||||||
|
// to login the user. If a user is returned, their ID will be stored in
|
||||||
|
// the session like normal and the user will be considered logged in.
|
||||||
|
$cookie = explode('|', $cookie);
|
||||||
|
|
||||||
|
if (count($cookie) < 2) return;
|
||||||
|
|
||||||
|
list($id, $username) = array($cookie[0], $cookie[1]);
|
||||||
|
|
||||||
|
if ( ! is_null($user = call_user_func(Config::get('auth.user'), $id)) and $user->{Config::get('auth.username')} === $username)
|
||||||
|
{
|
||||||
|
static::login($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $user;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempt to log a user into the application.
|
* Attempt to log a user into the application.
|
||||||
*
|
*
|
||||||
|
@ -95,7 +115,9 @@ public static function user()
|
||||||
*/
|
*/
|
||||||
public static function attempt($username, $password = null, $remember = false)
|
public static function attempt($username, $password = null, $remember = false)
|
||||||
{
|
{
|
||||||
if ( ! is_null($user = call_user_func(Config::get('auth.attempt'), $username, $password)))
|
$config = Config::get('auth');
|
||||||
|
|
||||||
|
if ( ! is_null($user = call_user_func($config['attempt'], $username, $password, $config)))
|
||||||
{
|
{
|
||||||
static::login($user, $remember);
|
static::login($user, $remember);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue