$this->AUTOCLOSE_SESSION(), ]); } function beforeSetup(): void { parent::beforeSetup(); if ($this->SULOGIN_ALLOWED()) $this->suloginMaybe(); if (static::AUTORESTORE_ALERTER_SESSION) { # s'assurer que la session est chargée al::get()->restoreSession(); } } protected function suloginMaybe(): void { $username = P::get("su!"); if ($username) { $am = authz::manager(); $am->setSulogin(); $am->selectAuthz($username); page::redirect(); } } protected function ensureAuthOrRedirect(bool $requireAuth, bool $requireAuthz, $requireRole, $requirePerm): void { $am = authz::manager(); $loginUrl = $this->getLoginUrl(); $destUrl = page::self(true); if (!$am->checkCookie()) { if (!$requireAuth) return; $am->redirect($am::REASON_LOGIN, $destUrl, $loginUrl); } elseif (!$am->checkSession()) { if ($am->isNewSession()) { $am->redirect($am::REASON_LOGIN, $destUrl, $loginUrl); } else { $am->redirect($am::REASON_SESSION, $destUrl, $loginUrl); } } elseif ($requireAuth && !$am->isAuth()) { $am->redirect($am::REASON_SESSION, $destUrl, $loginUrl); } A::ensure_narray($requireRole); A::ensure_narray($requirePerm); if ($requireAuthz && $am->isAuth() && !$am->checkAuthz($requireRole, $requirePerm)) { $am->redirect($am::REASON_UNAUTHORIZED, $destUrl, $loginUrl); } if ($am->isAuth()) $am->setConnected(); } protected function ensureFormLoginAndRedirect(?string $username, ?string $password, string $destUrl): void { if ($username === null && $password === null) return; if (authz::manager()->formLogin($username, $password)) { page::redirect($destUrl); } } }