application = $app; $this->provider = $provider; $this->user = null; } /** * */ public function authenticate(): void { Log::debug(sprintf('Now at %s', __METHOD__)); if (!is_null($this->user)) { Log::debug('No user found.'); return; } // Get the user identifier from $_SERVER $userID = request()->server('REMOTE_USER') ?? null; if (null === $userID) { Log::debug('No user in REMOTE_USER.'); throw new FireflyException('The REMOTE_USER header was unexpectedly empty.'); } // do some basic debugging here: // $userID = 'test@firefly'; /** @var User $user */ $user = $this->provider->retrieveById($userID); Log::debug(sprintf('Result of getting user from provider: %s', $user->email)); $this->user = $user; } /** * @inheritDoc */ public function check(): bool { $result = !is_null($this->user()); Log::debug(sprintf('Now in check(). Will return %s', var_export($result, true))); return $result; } /** * @inheritDoc */ public function guest(): bool { //Log::debug(sprintf('Now at %s', __METHOD__)); return !$this->check(); } /** * @inheritDoc */ public function id(): ?User { //Log::debug(sprintf('Now at %s', __METHOD__)); return $this->user; } /** * @inheritDoc */ public function setUser(Authenticatable $user) { //Log::debug(sprintf('Now at %s', __METHOD__)); $this->user = $user; } /** * @inheritDoc */ public function user(): ?User { //Log::debug(sprintf('Now in user(). Will return NULL: %s', var_export(null === $this->user, true))); return $this->user; } /** * @inheritDoc */ public function validate(array $credentials = []) { throw new FireflyException('Did not implement RemoteUserGuard::validate()'); } }