nur-ture/nur_src/b/authnz/ExtAuthzManager.php

79 lines
2.0 KiB
PHP

<?php
namespace nur\b\authnz;
use nur\authz;
use nur\config;
use nur\F;
use nur\msg;
use nur\v\fo;
use nur\v\ly;
use nur\v\page;
use nur\v\v;
use nur\v\vo;
use nur\v\vp\AInitAuthzPage;
class ExtAuthzManager extends AuthzManager {
const USER_MANAGER_CLASS = ExtUserManager::class;
private $destPage = null;
function beforeSetup(AInitAuthzPage $page): void {
# initialiser la session avant setup. ainsi, dans les fonction beforeSetup(),
# setup() et afterSetup(), la session est disponible
$this->destPage = F::get("d", $page->getMainUrl());
$this->checkSession($username, $authType);
if ($authType === "ext" && F::get("a")) {
# autologin
$extauthUrl = config::k("url")."/".$page->getExtauthUrl();
page::redirect(page::bu($extauthUrl, [
"d" => $this->destPage,
]));
}
}
function print(AInitAuthzPage $page): void {
page::no_cache();
ly::row();
vo::h1(["class" => "text-center", q($page->TITLE())]);
ly::col(["sm" => 6, "sm-push" => 3]);
$status = $this->getStatus();
switch ($status) {
case authz::DISCONNECTED:
msg::warning("Vous avez été déconnecté. Veuillez vous reconnecter");
break;
case authz::UNAUTHORIZED:
msg::error(["user" => [
"Connecté en tant que ",
v::b($this->getAuth()),
", vous n'êtes pas autorisé à accéder à la page que vous avez demandé.",
]]);
break;
}
ly::panel("Connexion");
fo::start([
"type" => "basic",
"action" => $page->getExtauthUrl(),
"method" => "get",
]);
fo::hidden("d", $this->destPage);
vo::p("Si vous avez un compte à l'université, vous pouvez vous connecter");
if ($this->isAuth()) {
if ($status != authz::UNAUTHORIZED) {
msg::warning(["user" => [
"Connecté en tant que ",
v::b($this->getAuth()),
", vous n'êtes pas autorisé à accéder à cette application.",
]]);
}
} else {
fo::submit(["Connexion", "accesskey" => "r"]);
}
fo::end();
ly::end();
}
}