user() !== null; } public function guest(): bool { return ! $this->check(); } public function id(): mixed { return $this->user()?->getAuthIdentifier(); } public function hasUser(): bool { return $this->user !== null; } public function user(): ?XenForoUser { if ($this->hasUser()) return $this->user; $sessionId = $this->request->cookie('xf_session'); if(!$sessionId) return null; $xfSession = \DB::connection('xenforo') ->table('session') ->where('session_id', $sessionId) ->value('session_data'); if(!$xfSession) return null; $sessionData = unserialize($xfSession); if (!$sessionData || !isset($sessionData['userId']) || !$sessionData['userId']) return null; $xfUser = \DB::connection('xenforo') ->table('user') ->where('user_id', $sessionData['userId']) ->first(); if(!$xfUser) return null; return $this->user = new XenForoUser($xfUser); } public function validate(array $credentials = []): bool { return false; } public function setUser(mixed $user): void { $this->user = $user; } public function logout(): void { redirect('/'); } }