Identification unique sans déconnexion
This commit is contained in:
parent
ec88f34d6a
commit
55678c6820
|
@ -13,17 +13,91 @@
|
||||||
|
|
||||||
use \error\core\Err;
|
use \error\core\Err;
|
||||||
use \error\core\Error;
|
use \error\core\Error;
|
||||||
|
use router\controller\redirect;
|
||||||
|
|
||||||
class AuthSystemDefault implements AuthSystem{
|
class AuthSystemDefault implements AuthSystem {
|
||||||
|
|
||||||
/* VERIFICATION DES ACCES EN FONCTION DE PERMISSIONS ATTENDUES
|
/** AUTHENTIFICATION VIA LE PROTOCOLE CAS AU PORTAIL DE L'UNIVERSITÉ
|
||||||
|
*
|
||||||
|
* AuthSystemDefault constructor.
|
||||||
|
*/
|
||||||
|
public function __construct() {
|
||||||
|
if (strpos($_SERVER['REQUEST_URI'], '/logout/') !== false) {
|
||||||
|
unset($_SESSION['idCAS']);
|
||||||
|
|
||||||
|
header('Location : https://www.google.fr/');
|
||||||
|
|
||||||
|
// // ce qu'il faudrait faire pour se déconnecter
|
||||||
|
// header("Location : https://sso.univ-pau.fr/cas/logout?service=$_SERVER[REQUEST_SCHEME]://$_SERVER[HTTP_HOST]/");
|
||||||
|
// // ce qu'il faudrait faire pour faire la redirection sans se déconnecter du portail CAS
|
||||||
|
// header("Location : $_SERVER[REQUEST_SCHEME]://$_SERVER[HTTP_HOST]/");
|
||||||
|
|
||||||
|
// // ce qu'on aurait pu faire pour se déconnecter mais la requête tourne dans le vide
|
||||||
|
// echo "<script>location.href='https://sso.univ-pau.fr/cas/logout?service=$_SERVER[REQUEST_SCHEME]://$_SERVER[HTTP_HOST]/';</script>";
|
||||||
|
|
||||||
|
// ce qu'il reste à faire pour au moins ne pas charger la page logout qui n'existe pas
|
||||||
|
echo "<script>location.href='$_SERVER[REQUEST_SCHEME]://$_SERVER[HTTP_HOST]/';</script>";
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($_SESSION['idCAS'])) {
|
||||||
|
// lorsque $_GET est miraculeusement vide
|
||||||
|
$parts = parse_url($_SERVER['REQUEST_URI']);
|
||||||
|
parse_str($parts['query'], $query);
|
||||||
|
$ticket = $query['ticket'];
|
||||||
|
// $ticket = $_GET['ticket'];
|
||||||
|
|
||||||
|
// connexion
|
||||||
|
if (empty($ticket)) {
|
||||||
|
// ce qu'il faut faire et que l'on fait parce qu'ici le header fonctionne
|
||||||
|
header("Location: https://sso.univ-pau.fr/cas/login?service=$_SERVER[REQUEST_SCHEME]://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
|
||||||
|
|
||||||
|
// // ce qu'il faut faire si la solution du dessus ne fonctionne pas
|
||||||
|
// echo '<script>location.href="https://sso.univ-pau.fr/cas/login?service=" + location.href;</script>';
|
||||||
|
// die();
|
||||||
|
}
|
||||||
|
// vérification du ticket
|
||||||
|
else {
|
||||||
|
// on retire les paramètres GET de l'URI
|
||||||
|
$uri = strstr($_SERVER['REQUEST_URI'], '?', true);
|
||||||
|
$currentPage = "$_SERVER[REQUEST_SCHEME]://$_SERVER[HTTP_HOST]$uri";
|
||||||
|
$page = "https://sso.univ-pau.fr/cas/serviceValidate?ticket=$ticket&service=$currentPage";
|
||||||
|
|
||||||
|
// create curl resource
|
||||||
|
$ch = curl_init();
|
||||||
|
// set url
|
||||||
|
curl_setopt($ch, CURLOPT_URL, $page);
|
||||||
|
//return the transfer as a string
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||||
|
// $output contains the output string
|
||||||
|
$output = curl_exec($ch);
|
||||||
|
$message = trim(strip_tags($output));
|
||||||
|
// close curl resource to free up system resources
|
||||||
|
curl_close($ch);
|
||||||
|
|
||||||
|
// si l'authentification est validée
|
||||||
|
if (strpos($output, 'user') !== false) {
|
||||||
|
$_SESSION['idCAS'] = $message;
|
||||||
|
echo "<script>location.href='$currentPage';</script>";
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
// redirection en cas de pépin mais normalement ça n'arrive pas
|
||||||
|
else {
|
||||||
|
echo "<script>location.href='http://ptut.com:8080/home/';</script>";
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* VERIFICATION DES ACCÈS EN FONCTION DE PERMISSIONS ATTENDUES
|
||||||
*
|
*
|
||||||
* @expected<array> Liste des permissions attendues
|
* @expected<array> Liste des permissions attendues
|
||||||
*
|
*
|
||||||
* @return error<Error> Erreur associée à la permission (Success/PermissionError/TokenError/etc)
|
* @return error<Error> Erreur associée à la permission (Success/PermissionError/TokenError/etc)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function permission($expected){
|
public static function permission($expected) {
|
||||||
return new Error(Err::Success);
|
return new Error(Err::Success);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,17 +40,15 @@ gstore.add('menu_item', {
|
||||||
label: 'Fiches',
|
label: 'Fiches',
|
||||||
url: 'fiche',
|
url: 'fiche',
|
||||||
icon: 'fiche'
|
icon: 'fiche'
|
||||||
|
}, logout: {
|
||||||
|
label: 'Déconnexion',
|
||||||
|
url: 'logout',
|
||||||
|
icon: 'logout'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/* (3) Gestion du login/logout */
|
|
||||||
if( _SERVER.session.connected ) gstore.get.menu_item.logout = { label: 'Déconnexion', url: 'logout', icon: 'logout' };
|
|
||||||
else gstore.get.menu_item.login = { label: 'Connexion', url: 'login', icon: 'login' };
|
|
||||||
|
|
||||||
|
/* (3) Set current page active in menu */
|
||||||
|
|
||||||
|
|
||||||
/* (4) Set current page active in menu */
|
|
||||||
if( gstore.get.URI.length > 0 && gstore.get.menu_item.hasOwnProperty(gstore.get.URI[0]) )
|
if( gstore.get.URI.length > 0 && gstore.get.menu_item.hasOwnProperty(gstore.get.URI[0]) )
|
||||||
gstore.add('menu_item_active', gstore.get.menu_item[gstore.get.URI[0]].url);
|
gstore.add('menu_item_active', gstore.get.menu_item[gstore.get.URI[0]].url);
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue