Cookie.php in Drupal 8
File
core/modules/user/src/Authentication/Provider/Cookie.php
View source
<?php
namespace Drupal\user\Authentication\Provider;
use Drupal\Core\Authentication\AuthenticationProviderInterface;
use Drupal\Core\Database\Connection;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Session\UserSession;
use Drupal\Core\Session\SessionConfigurationInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class Cookie implements AuthenticationProviderInterface {
protected $sessionConfiguration;
protected $connection;
public function __construct(SessionConfigurationInterface $session_configuration, Connection $connection) {
$this->sessionConfiguration = $session_configuration;
$this->connection = $connection;
}
public function applies(Request $request) {
return $request
->hasSession() && $this->sessionConfiguration
->hasSession($request);
}
public function authenticate(Request $request) {
return $this
->getUserFromSession($request
->getSession());
}
protected function getUserFromSession(SessionInterface $session) {
if ($uid = $session
->get('uid')) {
$values = $this->connection
->query('SELECT * FROM {users_field_data} u WHERE u.uid = :uid AND u.default_langcode = 1', [
':uid' => $uid,
])
->fetchAssoc();
if (!empty($values) && $values['status'] == 1) {
$rids = $this->connection
->query('SELECT roles_target_id FROM {user__roles} WHERE entity_id = :uid', [
':uid' => $values['uid'],
])
->fetchCol();
$values['roles'] = array_merge([
AccountInterface::AUTHENTICATED_ROLE,
], $rids);
return new UserSession($values);
}
}
return NULL;
}
}
Classes
Name |
Description |
Cookie |
Cookie based authentication provider. |