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')); }
/** * 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; }