diff --git a/core/includes/session.inc b/core/includes/session.inc index 31e67a6..6df7581 100644 --- a/core/includes/session.inc +++ b/core/includes/session.inc @@ -16,6 +16,8 @@ * data should instead be accessed via the $_SESSION superglobal. */ +use Drupal\Core\Session\UserSession; + /** * Session handler assigned by session_set_save_handler(). * @@ -89,22 +91,26 @@ function _drupal_session_read($sid) { // a HTTPS session or we are about to log in so we check the sessions table // for an anonymous session with the non-HTTPS-only cookie. if ($is_https) { - $user = db_query("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.ssid = :ssid", array(':ssid' => $sid))->fetchObject(); - if (!$user) { + $values = db_query("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.ssid = :ssid", array(':ssid' => $sid))->fetchAssoc(); + if (!$values) { if (isset($_COOKIE[$insecure_session_name])) { - $user = db_query("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.sid = :sid AND s.uid = 0", array( + $values = db_query("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.sid = :sid AND s.uid = 0", array( ':sid' => $_COOKIE[$insecure_session_name])) - ->fetchObject(); + ->fetchAssoc(); } } } else { - $user = db_query("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.sid = :sid", array(':sid' => $sid))->fetchObject(); + $values = db_query("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.sid = :sid", array(':sid' => $sid))->fetchAssoc(); + } + + if ($values) { + $user = new UserSession($values); } // We found the client's session record and they are an authenticated, // active user. - if ($user && $user->uid > 0 && $user->status == 1) { + if ($user && $user->id() > 0 && $user->status == 1) { // Add roles element to $user. $user->roles = array(); $user->roles[DRUPAL_AUTHENTICATED_RID] = DRUPAL_AUTHENTICATED_RID; diff --git a/core/lib/Drupal/Core/Session/UserSession.php b/core/lib/Drupal/Core/Session/UserSession.php index 5894ab0..5c50ccd 100644 --- a/core/lib/Drupal/Core/Session/UserSession.php +++ b/core/lib/Drupal/Core/Session/UserSession.php @@ -13,6 +13,10 @@ class UserSession implements UserSessionInterface { public $uid; public $hostname; public $roles; + public $sid; + public $ssid; + public $session; + public $timestamp; public function __construct(array $values = array()) { foreach ($values as $key => $value) { @@ -23,11 +27,20 @@ public function __construct(array $values = array()) { public function id() { return $this->uid; } - public function label() { - // @todo Use configuration. - return t('Anonymous'); - } + public function getRoles() { return $this->roles; } + + public function getSecureSessionId() { + return $this->ssid; + } + + public function getSessionData() { + return $this->session; + } + + public function getSessionId() { + return $this->sid; + } } \ No newline at end of file diff --git a/core/lib/Drupal/Core/Session/UserSessionInterface.php b/core/lib/Drupal/Core/Session/UserSessionInterface.php index da188c0..8dbd7a7 100644 --- a/core/lib/Drupal/Core/Session/UserSessionInterface.php +++ b/core/lib/Drupal/Core/Session/UserSessionInterface.php @@ -9,6 +9,8 @@ interface UserSessionInterface { public function id(); - public function label(); public function getRoles(); + public function getSessionId(); + public function getSecureSessionId(); + public function getSessionData(); } \ No newline at end of file diff --git a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php index 6c9b39d..efcb8c8 100644 --- a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php +++ b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php @@ -179,4 +179,16 @@ public function id() { public function getRoles() { return $this->roles; } + + public function getSecureSessionId() { + return NULL; + } + + public function getSessionData() { + return array(); + } + + public function getSessionId() { + return NULL; + } }