register_hook('FORM_LOGIN_OUTPUT', 'BEFORE', $this, 'handle_login_form'); // Connexion et déconnexion $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handle_action'); } /** * * Suppression du formulaire par défaut et création de celui pour le CAS * * @param Doku_Event $event * @return void */ public function handle_login_form(Doku_Event $event): void { global $auth; global $lang; global $ID; if (!is_a($auth, 'auth_plugin_authssocas')) return; // Création du lien avec le logo. if ($this->getConf('logourl') != '') { $caslogo = ' '; } else { $caslogo = ''; } /** @var dokuwiki\Form\Form $form */ /** @noinspection PhpUndefinedFieldInspection */ $form =& $event->data; // Suppression du formulaire de base for($i = $form->elementCount(); $i >= 0;){ $form->removeElement($i); $i--; } $login = wl($ID, 'do=caslogin', true, '&'); // Ajout du lien d'authentification pour le CAS $form->addFieldsetOpen($this->getConf('name')); $form->addHTML('

' . $caslogo . '
' . $lang['btn_login'] . '

'); $form->addFieldsetClose(); } /** * * Gestion des actions connexion et déconnexion * * @param Doku_Event $event * @return void */ public function handle_action(Doku_Event $event): void { global $auth; global $ID; /** @noinspection PhpUndefinedFieldInspection */ if ($event->data == 'caslogin') { $auth->logIn(); } /** @noinspection PhpUndefinedFieldInspection */ if ($event->data == 'logout') { $auth->logOff(); // Redirige vers la page d'acceuil du wiki, sinon le lien d'administration du wiki reste visible (pour les administrateurs). header('Location: '. wl($ID,'',true)); } } }