. */ namespace SP\Modules\Web\Controllers\Traits; use SP\Core\Exceptions\SPException; use SP\Domain\Config\In\ConfigDataInterface; use SP\Http\RequestInterface; use SP\Mvc\Controller\ControllerTrait; /** * Trait ControllerTratit */ trait WebControllerTrait { use ControllerTrait; private bool $setup = false; /** * Returns the signed URI component after validating its signature. * This component is used for deep linking */ final protected function getSignedUriFromRequest( RequestInterface $request, ConfigDataInterface $configData ): ?string { if (!$this->setup) { return null; } $from = $request->analyzeString('from'); if ($from) { try { $request->verifySignature($configData->getPasswordSalt(), 'from'); } catch (SPException $e) { processException($e); $from = null; } } return $from; } /** * @throws \JsonException */ private function handleSessionTimeout(): void { $this->sessionLogout( $this->request, $this->configData, fn($redirect) => $this->router->response()->redirect($redirect)->send(true) ); } }