Extend Auth::laravel to accept multiple params to verify

Signed-off-by: Jeffrey Way <jeffrey@envato.com>
This commit is contained in:
Jeffrey Way 2012-07-09 21:34:17 -04:00
parent ebcbbbb843
commit 9dd964c316
2 changed files with 32 additions and 20 deletions

View File

@ -26,21 +26,27 @@ public function retrieve($id)
*/ */
public function attempt($arguments = array()) public function attempt($arguments = array())
{ {
$username = Config::get('auth.username'); $user = $this->model()->where(function($query) use($arguments) {
$username = Config::get('auth.username');
$user = $this->model()->where($username, '=', $arguments['username'])->first(); $query->where($username, '=', $arguments['username']);
// This driver uses a basic username and password authentication scheme foreach( array_except($arguments, array('username', 'password')) as $column => $val )
// so if the credentials match what is in the database we will just {
// log the user into the application and remember them if asked. $query->where($column, '=', $val);
$password = $arguments['password']; }
})->first();
$password_field = Config::get('auth.password', 'password'); // If the credentials match what is in the database we will just
// log the user into the application and remember them if asked.
$password = $arguments['password'];
if ( ! is_null($user) and Hash::check($password, $user->get_attribute($password_field))) $password_field = Config::get('auth.password', 'password');
{
return $this->login($user->id, array_get($arguments, 'remember')); if ( ! is_null($user) and Hash::check($password, $user->get_attribute($password_field)))
} {
return $this->login($user->id, array_get($arguments, 'remember'));
}
return false; return false;
} }

View File

@ -30,10 +30,9 @@ public function retrieve($id)
*/ */
public function attempt($arguments = array()) public function attempt($arguments = array())
{ {
$user = $this->get_user($arguments['username']); $user = $this->get_user($arguments);
// This driver uses a basic username and password authentication scheme // If the credentials match what is in the database we will just
// so if the credentials match what is in the database we will just
// log the user into the application and remember them if asked. // log the user into the application and remember them if asked.
$password = $arguments['password']; $password = $arguments['password'];
@ -48,18 +47,25 @@ public function attempt($arguments = array())
} }
/** /**
* Get the user from the database table by username. * Get the user from the database table.
* *
* @param mixed $value * @param mixed $array
* @return mixed * @return mixed
*/ */
protected function get_user($value) protected function get_user($arguments)
{ {
$table = Config::get('auth.table'); $table = Config::get('auth.table');
$username = Config::get('auth.username'); return DB::table($table)->where(function($query) use($arguments) {
$username = Config::get('auth.username');
return DB::table($table)->where($username, '=', $value)->first(); $query->where($username, '=', $arguments['username']);
foreach( array_except($arguments, array('username', 'password')) as $column => $val )
{
$query->where($column, '=', $val);
}
})->first();
} }
} }