. */ namespace SP\Core; use JsonException; use Klein\Klein; use SP\Core\Bootstrap\BootstrapBase; use SP\Domain\Common\Adapters\Serde; use SP\Domain\Core\Exceptions\SPException; use SP\Domain\Http\Ports\RequestService; use SP\Infrastructure\File\FileException; use SP\Infrastructure\File\FileHandler; /** * Base module for HTTP based modules */ abstract class HttpModuleBase extends ModuleBase { public function __construct( Application $application, ProvidersHelper $providersHelper, protected readonly RequestService $request, protected readonly Klein $router ) { parent::__construct($application, $providersHelper); } /** * Comprobar si el modo mantenimiento está activado * Esta función comprueba si el modo mantenimiento está activado. * * @throws JsonException */ protected function checkMaintenanceMode(): bool { if ($this->configData->isMaintenance()) { BootstrapBase::$LOCK = self::getAppLock(); return !$this->request->isAjax() || !(BootstrapBase::$LOCK !== false && BootstrapBase::$LOCK->userId > 0 && $this->context->isLoggedIn() && BootstrapBase::$LOCK->userId === $this->context->getUserData()->getId()); } return false; } /** * Comprueba si la aplicación está bloqueada * * @return bool|string * @throws SPException */ private static function getAppLock(): bool|string { try { $file = new FileHandler(LOCK_FILE); return Serde::deserializeJson($file->readToString()); } catch (FileException) { return false; } } }