Final Class Yiisoft\User\CurrentUser
| Inheritance | Yiisoft\User\CurrentUser |
|---|
Maintains current identity and allows logging in and out using it.
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\User\CurrentUser | |
| can() | Checks if the user can perform the operation as specified by the given permission. | Yiisoft\User\CurrentUser |
| clear() | Clears the data for working with the event loop. | Yiisoft\User\CurrentUser |
| clearIdentityOverride() | Clears the identity override. | Yiisoft\User\CurrentUser |
| getId() | Returns a value that uniquely represents the user. | Yiisoft\User\CurrentUser |
| getIdentity() | Returns the identity object associated with the currently logged-in user. | Yiisoft\User\CurrentUser |
| isGuest() | Returns a value indicating whether the user is a guest (not authenticated). | Yiisoft\User\CurrentUser |
| login() | Logs in a user. | Yiisoft\User\CurrentUser |
| logout() | Logs out the current user. | Yiisoft\User\CurrentUser |
| overrideIdentity() | Overrides identity. | Yiisoft\User\CurrentUser |
| withAbsoluteAuthTimeout() | Returns a new instance with the specified number of seconds in which the user will be logged out automatically regardless of activity. | Yiisoft\User\CurrentUser |
| withAccessChecker() | Returns a new instance with the specified access checker to check user permissions can(). | Yiisoft\User\CurrentUser |
| withAuthTimeout() | Returns a new instance with the specified number of seconds in which the user will be logged out automatically in case of remaining inactive. | Yiisoft\User\CurrentUser |
| withSession() | Returns a new instance with the specified session to store current user ID and auth timeouts. | Yiisoft\User\CurrentUser |
Constants
| Constant | Value | Description | Defined By |
|---|---|---|---|
| SESSION_AUTH_ABSOLUTE_EXPIRE | '__auth_absolute_expire' | Yiisoft\User\CurrentUser | |
| SESSION_AUTH_EXPIRE | '__auth_expire' | Yiisoft\User\CurrentUser | |
| SESSION_AUTH_ID | '__auth_id' | Yiisoft\User\CurrentUser |
Method Details
| public __construct( \Yiisoft\Auth\IdentityRepositoryInterface $identityRepository, \Psr\EventDispatcher\EventDispatcherInterface $eventDispatcher, Yiisoft\User\Guest\GuestIdentityFactoryInterface|null $guestIdentityFactory = null ): mixed | ||
| $identityRepository | \Yiisoft\Auth\IdentityRepositoryInterface | |
| $eventDispatcher | \Psr\EventDispatcher\EventDispatcherInterface | |
| $guestIdentityFactory | Yiisoft\User\Guest\GuestIdentityFactoryInterface|null | |
public function __construct(
private IdentityRepositoryInterface $identityRepository,
private EventDispatcherInterface $eventDispatcher,
?GuestIdentityFactoryInterface $guestIdentityFactory = null
) {
$this->guestIdentityFactory = $guestIdentityFactory ?? new GuestIdentityFactory();
}
Checks if the user can perform the operation as specified by the given permission.
Note that you must provide access checker via withAccessChecker() in order to use this
method. Otherwise, it will always return false.
| public can( \BackedEnum|string $permissionName, array $params = [] ): boolean | ||
| $permissionName | \BackedEnum|string |
The name of the permission (e.g. "edit post") that needs access check. You can use backed enumerations as permission name, in this case the value of the enumeration will be used. |
| $params | array |
Name-value pairs that would be passed to the rules associated with the roles and permissions assigned to the user. |
| return | boolean |
Whether the user can perform the operation as specified by the given permission. |
|---|---|---|
public function can(string|BackedEnum $permissionName, array $params = []): bool
{
if ($this->accessChecker === null) {
return false;
}
if ($permissionName instanceof BackedEnum) {
$permissionName = (string) $permissionName->value;
}
return $this->accessChecker->userHasPermission($this->getId(), $permissionName, $params);
}
Clears the data for working with the event loop.
| public clear( ): void |
public function clear(): void
{
$this->identity = null;
$this->identityOverride = null;
}
Clears the identity override.
| public clearIdentityOverride( ): void |
public function clearIdentityOverride(): void
{
$this->identityOverride = null;
}
Returns a value that uniquely represents the user.
See also getIdentity().
| public getId( ): string|null | ||
| return | string|null |
The unique identifier for the user. If |
|---|---|---|
public function getId(): ?string
{
return $this->getIdentity()->getId();
}
Returns the identity object associated with the currently logged-in user.
| public getIdentity( ): \Yiisoft\Auth\IdentityInterface |
public function getIdentity(): IdentityInterface
{
$identity = $this->identityOverride ?? $this->identity;
if ($identity === null) {
$id = $this->getSavedId();
if ($id !== null) {
$identity = $this->identityRepository->findIdentity($id);
}
$identity ??= $this->guestIdentityFactory->create();
$this->identity = $identity;
}
return $identity;
}
Returns a value indicating whether the user is a guest (not authenticated).
See also getIdentity().
| public isGuest( ): boolean | ||
| return | boolean |
Whether the current user is a guest. |
|---|---|---|
public function isGuest(): bool
{
return $this->getIdentity() instanceof GuestIdentityInterface;
}
Logs in a user.
| public login( \Yiisoft\Auth\IdentityInterface $identity ): boolean | ||
| $identity | \Yiisoft\Auth\IdentityInterface |
The user identity (which should already be authenticated). |
| return | boolean |
Whether the user is logged in. |
|---|---|---|
public function login(IdentityInterface $identity): bool
{
if ($this->beforeLogin($identity)) {
$this->switchIdentity($identity);
$this->afterLogin($identity);
}
return !$this->isGuest();
}
Logs out the current user.
| public logout( ): boolean | ||
| return | boolean |
Whether the user is logged out. |
|---|---|---|
public function logout(): bool
{
if ($this->isGuest()) {
return false;
}
$identity = $this->getIdentity();
if ($this->beforeLogout($identity)) {
$this->switchIdentity($this->guestIdentityFactory->create());
$this->afterLogout($identity);
}
return $this->isGuest();
}
Overrides identity.
| public overrideIdentity( \Yiisoft\Auth\IdentityInterface $identity ): void | ||
| $identity | \Yiisoft\Auth\IdentityInterface |
The identity instance to overriding. |
public function overrideIdentity(IdentityInterface $identity): void
{
$this->identityOverride = $identity;
}
Returns a new instance with the specified number of seconds in which the user will be logged out automatically regardless of activity.
| public withAbsoluteAuthTimeout( integer $timeout ): self | ||
| $timeout | integer |
The number of seconds in which the user will be logged out automatically regardless
of activity. Default is |
public function withAbsoluteAuthTimeout(int $timeout): self
{
$new = clone $this;
$new->absoluteAuthTimeout = $timeout;
return $new;
}
Returns a new instance with the specified access checker to check user permissions can().
| public withAccessChecker( \Yiisoft\Access\AccessCheckerInterface $accessChecker ): self | ||
| $accessChecker | \Yiisoft\Access\AccessCheckerInterface |
The access checker instance. |
public function withAccessChecker(AccessCheckerInterface $accessChecker): self
{
$new = clone $this;
$new->accessChecker = $accessChecker;
return $new;
}
Returns a new instance with the specified number of seconds in which the user will be logged out automatically in case of remaining inactive.
| public withAuthTimeout( integer $timeout ): self | ||
| $timeout | integer |
The number of seconds in which the user will be logged out automatically in case of
remaining inactive. Default is |
public function withAuthTimeout(int $timeout): self
{
$new = clone $this;
$new->authTimeout = $timeout;
return $new;
}
Returns a new instance with the specified session to store current user ID and auth timeouts.
| public withSession( \Yiisoft\Session\SessionInterface $session ): self | ||
| $session | \Yiisoft\Session\SessionInterface |
The session instance. |
public function withSession(SessionInterface $session): self
{
$new = clone $this;
$new->session = $session;
return $new;
}
Signup or Login in order to comment.