123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- <?php
- namespace Drupal\Core\Session;
- /**
- * An implementation of the user account interface for the global user.
- *
- * @todo: Change all properties to protected.
- */
- class UserSession implements AccountInterface {
- /**
- * User ID.
- *
- * @var int
- */
- protected $uid = 0;
- /**
- * List of the roles this user has.
- *
- * Defaults to the anonymous role.
- *
- * @var array
- */
- protected $roles = [AccountInterface::ANONYMOUS_ROLE];
- /**
- * The Unix timestamp when the user last accessed the site.
- *
- * @var string.
- */
- protected $access;
- /**
- * The name of this account.
- *
- * @var string
- */
- public $name = '';
- /**
- * The preferred language code of the account.
- *
- * @var string
- */
- protected $preferred_langcode;
- /**
- * The preferred administrative language code of the account.
- *
- * @var string
- */
- protected $preferred_admin_langcode;
- /**
- * The email address of this account.
- *
- * @var string
- */
- protected $mail;
- /**
- * The timezone of this account.
- *
- * @var string
- */
- protected $timezone;
- /**
- * Constructs a new user session.
- *
- * @param array $values
- * Array of initial values for the user session.
- */
- public function __construct(array $values = []) {
- foreach ($values as $key => $value) {
- $this->$key = $value;
- }
- }
- /**
- * {@inheritdoc}
- */
- public function id() {
- return $this->uid;
- }
- /**
- * {@inheritdoc}
- */
- public function getRoles($exclude_locked_roles = FALSE) {
- $roles = $this->roles;
- if ($exclude_locked_roles) {
- $roles = array_values(array_diff($roles, [AccountInterface::ANONYMOUS_ROLE, AccountInterface::AUTHENTICATED_ROLE]));
- }
- return $roles;
- }
- /**
- * {@inheritdoc}
- */
- public function hasPermission($permission) {
- // User #1 has all privileges.
- if ((int) $this->id() === 1) {
- return TRUE;
- }
- return $this->getRoleStorage()->isPermissionInRoles($permission, $this->getRoles());
- }
- /**
- * {@inheritdoc}
- */
- public function isAuthenticated() {
- return $this->uid > 0;
- }
- /**
- * {@inheritdoc}
- */
- public function isAnonymous() {
- return $this->uid == 0;
- }
- /**
- * {@inheritdoc}
- */
- public function getPreferredLangcode($fallback_to_default = TRUE) {
- $language_list = \Drupal::languageManager()->getLanguages();
- if (!empty($this->preferred_langcode) && isset($language_list[$this->preferred_langcode])) {
- return $language_list[$this->preferred_langcode]->getId();
- }
- else {
- return $fallback_to_default ? \Drupal::languageManager()->getDefaultLanguage()->getId() : '';
- }
- }
- /**
- * {@inheritdoc}
- */
- public function getPreferredAdminLangcode($fallback_to_default = TRUE) {
- $language_list = \Drupal::languageManager()->getLanguages();
- if (!empty($this->preferred_admin_langcode) && isset($language_list[$this->preferred_admin_langcode])) {
- return $language_list[$this->preferred_admin_langcode]->getId();
- }
- else {
- return $fallback_to_default ? \Drupal::languageManager()->getDefaultLanguage()->getId() : '';
- }
- }
- /**
- * {@inheritdoc}
- */
- public function getUsername() {
- return $this->getAccountName();
- }
- /**
- * {@inheritdoc}
- */
- public function getAccountName() {
- return $this->name;
- }
- /**
- * {@inheritdoc}
- */
- public function getDisplayName() {
- $name = $this->name ?: \Drupal::config('user.settings')->get('anonymous');
- \Drupal::moduleHandler()->alter('user_format_name', $name, $this);
- return $name;
- }
- /**
- * {@inheritdoc}
- */
- public function getEmail() {
- return $this->mail;
- }
- /**
- * {@inheritdoc}
- */
- public function getTimeZone() {
- return $this->timezone;
- }
- /**
- * {@inheritdoc}
- */
- public function getLastAccessedTime() {
- return $this->access;
- }
- /**
- * Returns the role storage object.
- *
- * @return \Drupal\user\RoleStorageInterface
- * The role storage object.
- */
- protected function getRoleStorage() {
- return \Drupal::entityManager()->getStorage('user_role');
- }
- }
|