public function testShouldGetByIdentity()
 {
     // Make sure that our user will be returned when querying
     $confide_user = m::mock(new _mockedUser());
     $confide_user->email = '*****@*****.**';
     $confide_user->username = '******';
     $confide_user->shouldReceive('first')->with(array('$or' => array(array('email' => '*****@*****.**'), array('username' => 'LoL'))))->andReturn($confide_user)->atLeast(1)->getMock()->shouldReceive('first')->with(array('$or' => array(array('email' => '*****@*****.**'))))->andReturn($confide_user)->atLeast(1)->getMock()->shouldReceive('first')->with(array('$or' => array(array('username' => 'LoL'))))->andReturn($confide_user)->atLeast(1);
     // This will make sure that the mocked user will be returned
     // when calling `model()` (that will occur inside `repo->confirm()`)
     $this->repo->model = $confide_user;
     // Parameters to search for
     $values = array('email' => '*****@*****.**', 'username' => 'LoL');
     // Identity
     $identity = array('email', 'username');
     // Using array
     $this->assertEquals($confide_user, $this->repo->getUserByIdentity($values, $identity));
     // Using string
     $this->assertEquals($confide_user, $this->repo->getUserByIdentity($values, 'email'));
     // Using string for username
     $this->assertEquals($confide_user, $this->repo->getUserByIdentity($values, 'username'));
 }
Esempio n. 2
0
 /**
  * Attempt to log a user into the application with
  * password and identity field(s), usually email or username.
  *
  * @param  array $credentials
  * @param  bool $confirmed_only
  * @param  mixed $identity_columns
  * @return boolean Success
  */
 public function logAttempt($credentials, $confirmed_only = false, $identity_columns = array())
 {
     // If identity columns is not provided, use all columns of credentials
     // except password and remember.
     if (empty($identity_columns)) {
         $identity_columns = array_diff(array_keys($credentials), array('password', 'remember'));
     }
     // Check for throttle limit then log-in
     if (!$this->reachedThrottleLimit($credentials)) {
         $user = $this->repo->getUserByIdentity($credentials, $identity_columns);
         if ($user && ($user->confirmed || !$confirmed_only) && $this->app['hash']->check($credentials['password'], $user->password)) {
             $remember = isset($credentials['remember']) ? $credentials['remember'] : false;
             $this->app['auth']->login($user, $remember);
             return true;
         }
     }
     $this->throttleCount($credentials);
     return false;
 }