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