Bolt\AccessControl\Login::login PHP Метод

login() публичный Метод

Attempt to login a user with the given password. Accepts username or email.
public login ( string $userName, string $password, Bolt\Events\AccessControlEvent $event ) : boolean
$userName string
$password string
$event Bolt\Events\AccessControlEvent
Результат boolean
    public function login($userName, $password, AccessControlEvent $event)
    {
        $authCookie = $this->requestStack->getCurrentRequest()->cookies->get($this->authTokenName);
        // Remove expired tokens
        $this->getRepositoryAuthtoken()->deleteExpiredTokens();
        if ($userName !== null && $password !== null) {
            return $this->loginCheckPassword($userName, $password, $event);
        } elseif ($authCookie !== null) {
            return $this->loginCheckAuthtoken($authCookie, $event);
        }
        $this->systemLogger->error('Login function called with empty username/password combination, or no authentication token.', ['event' => 'security']);
        throw new AccessControlException('Invalid login parameters.');
    }

Usage Example

Пример #1
0
 public function testLoginSuccessToken()
 {
     $app = $this->getApp();
     $this->addDefaultUser($app);
     $logger = $this->getMock('\\Monolog\\Logger', ['debug'], ['testlogger']);
     $logger->expects($this->at(1))->method('debug')->with($this->matchesRegularExpression('#Generating authentication cookie#'));
     $logger->expects($this->at(2))->method('debug')->with($this->matchesRegularExpression("#Saving new login token#"));
     $app['logger.system'] = $logger;
     $logger = $this->getMock('\\Bolt\\Logger\\FlashLogger', ['success']);
     $logger->expects($this->at(0))->method('success')->with($this->equalTo('Session resumed.'));
     $logger->expects($this->at(1))->method('success')->with($this->equalTo("You've been logged on successfully."));
     $app['logger.flash'] = $logger;
     $userName = '******';
     $salt = 'vinagre';
     $ipAddress = '1.2.3.4';
     $hostName = 'bolt.dev';
     $userAgent = 'Bolt PHPUnit tests';
     $cookieOptions = ['remoteaddr' => true, 'httphost' => true, 'browseragent' => false];
     $token = (string) new Token\Generator($userName, $salt, $ipAddress, $hostName, $userAgent, $cookieOptions);
     $repo = $app['storage']->getRepository('Bolt\\Storage\\Entity\\Authtoken');
     $entityAuthtoken = new \Bolt\Storage\Entity\Authtoken();
     $entityAuthtoken->setUsername($userName);
     $entityAuthtoken->setToken($token);
     $entityAuthtoken->setSalt($salt);
     $entityAuthtoken->setLastseen(Carbon::now());
     $entityAuthtoken->setIp('1.2.3.4');
     $entityAuthtoken->setUseragent('Bolt PHPUnit tests');
     $entityAuthtoken->setValidity(Carbon::create()->addHours(2));
     $repo->save($entityAuthtoken);
     $login = new Login($app);
     $request = Request::createFromGlobals();
     $request->server->set('REMOTE_ADDR', $ipAddress);
     $request->server->set('HTTP_USER_AGENT', $userAgent);
     $request->cookies->set($app['token.authentication.name'], $token);
     $response = $login->login($request);
     $this->assertTrue($response);
 }