AccountProxy
class AccountProxy implements AccountProxyInterface (View source)
A proxied implementation of AccountInterface.
The reason why we need an account proxy is that we don't want to have global state directly stored in the container.
This proxy object avoids multiple invocations of the authentication manager which can happen if the current user is accessed in constructors. It also allows legacy code to change the current user where the user cannot be directly injected into dependent code.
Traits
Provides dependency injection friendly methods for serialization.
Properties
| protected array | $_serviceIds | An array of service IDs keyed by property name used for serialization. |
from DependencySerializationTrait |
| protected array | $_entityStorages | An array of entity type IDs keyed by the property name of their storages. |
from DependencySerializationTrait |
| protected AccountInterface | $account | The instantiated account. |
|
| protected int | $id | Account id. |
|
| protected int deprecated | $initialAccountId | Initial account id. |
|
| protected EventDispatcherInterface | $eventDispatcher | Event dispatcher. |
Methods
AccountProxy constructor.
Gets the currently wrapped account.
Returns the user ID or 0 for anonymous.
Returns a list of roles.
Checks whether a user has a certain permission.
Returns TRUE if the account is authenticated.
Returns TRUE if the account is anonymous.
Returns the preferred language code of the account.
Returns the preferred administrative language code of the account.
Returns the unaltered login name of this account.
Returns the unaltered login name of this account.
Returns the display name of this account.
Returns the email address of this account.
Returns the timezone of this account.
The timestamp when the account last accessed the site.
Sets the id of the initial account.
Load a user entity.
Details
__sleep()
{@inheritdoc}
__wakeup()
{@inheritdoc}
__construct(EventDispatcherInterface $eventDispatcher = NULL)
AccountProxy constructor.
setAccount(AccountInterface $account)
Sets the currently wrapped account.
Setting the current account is highly discouraged! Instead, make sure to inject the desired user object into the dependent code directly.
A preferable method of account impersonation is to use \Drupal\Core\Session\AccountSwitcherInterface::switchTo() and \Drupal\Core\Session\AccountSwitcherInterface::switchBack().
AccountInterface
getAccount()
Gets the currently wrapped account.
int
id()
Returns the user ID or 0 for anonymous.
array
getRoles(bool $exclude_locked_roles = FALSE)
Returns a list of roles.
bool
hasPermission(string $permission)
Checks whether a user has a certain permission.
bool
isAuthenticated()
Returns TRUE if the account is authenticated.
bool
isAnonymous()
Returns TRUE if the account is anonymous.
string
getPreferredLangcode(bool $fallback_to_default = TRUE)
Returns the preferred language code of the account.
string
getPreferredAdminLangcode(bool $fallback_to_default = TRUE)
Returns the preferred administrative language code of the account.
Defines which language is used on administrative pages.
string
getUsername()
Returns the unaltered login name of this account.
string
getAccountName()
Returns the unaltered login name of this account.
string|MarkupInterface
getDisplayName()
Returns the display name of this account.
By default, the passed-in object's 'name' property is used if it exists, or else, the site-defined value for the 'anonymous' variable. However, a module may override this by implementing hook_user_format_name_alter(&$name, $account).
string|null
getEmail()
Returns the email address of this account.
string
getTimeZone()
Returns the timezone of this account.
int
getLastAccessedTime()
The timestamp when the account last accessed the site.
A value of 0 means the user has never accessed the site.
setInitialAccountId(int $account_id)
Sets the id of the initial account.
Never use this method, its sole purpose is to work around weird effects during mid-request container rebuilds.
protected AccountInterface|null
loadUserEntity(int $account_id)
Load a user entity.
The entity manager requires additional initialization code and cache clearing after the list of modules is changed. Therefore it is necessary to retrieve it as late as possible.
Because of serialization issues it is currently not possible to inject the container into the AccountProxy. Thus it is necessary to retrieve the entity manager statically.