container->has(self::KEY_PORTAL); } /** * Get a portal ID (if an application is portal). */ public function getPortalId(): string { if (!$this->isPortal()) { throw new LogicException("Can't get portal ID for non-portal application."); } return $this->getPortal()->getId(); } /** * Get a portal entity (if an application is portal). */ public function getPortal(): PortalEntity { if (!$this->isPortal()) { throw new LogicException("Can't get portal for non-portal application."); } /** @var PortalEntity */ return $this->container->get(self::KEY_PORTAL); } /** * Whether any user is initialized. If not logged, it will also return TRUE, meaning the system used is used. */ public function hasUser(): bool { return $this->container->has(self::KEY_USER); } /** * Get a current logged user. If no auth is applied, then the system user will be returned. */ public function getUser(): UserEntity { if (!$this->hasUser()) { throw new LogicException("User is not yet available."); } /** @var UserEntity */ return $this->container->get(self::KEY_USER); } /** * Get an ID of a current logged user. If no auth is applied, then the system user will be returned. */ public function getUserId(): string { return $this->getUser()->getId(); } /** * Whether a user is logged. */ public function isLogged(): bool { if (!$this->container->has(self::KEY_USER)) { return false; } if ($this->getUser()->isSystem()) { return false; } return true; } /** * Whether logged as an admin. */ public function isAdmin(): bool { if (!$this->isLogged()) { return false; } return $this->getUser()->isAdmin(); } /** * Whether logged as an API user. */ public function isApi(): bool { if (!$this->isLogged()) { return false; } return $this->getUser()->isApi(); } }