getServerLogoutURL(); // recupere l'URL du logout de CAS
$cas_url.="?service=".$CAS->getURL(); // ajoute l'URL du service courant pour revenir
header('Location: '.$cas_url); // redirige vers le logout CAS
exit;
}
// procedure pour obtenir un PGT
if( !empty($_POST['BT_GET_PGT']) || // obtenir un PGT
!empty($_GET['ticket']) || // si on recoit le ticket pour le valider
!empty($_GET['pgtIou'])){ // si on recoit le PGT
if(!empty($_SESSION['PGT'])){
session_unset(); // supprime la session CAS
$_GET['ticket']=''; // supprime le ticket
}
$CAS = new CASClient(CAS_VERSION_2_0,TRUE,$cas_hostname,$cas_port,$cas_uri);// objet CAS en mode proxy
// pour mettre le fichier d'echange de PGT dans un emplacement spécifique
//$CAS->setPGTStorageFile('plain',"/home/cri/jmarchal/public_html/www");
$auth = $CAS->isAuthenticated(); // test si deja authentifié (session applicative)
if(!$auth) $CAS->forceAuthentication(); // force l'authentification si pas authentifié
if($CAS->hasPGT()){
$PGT=$CAS->getPGT(); // recupère le PGT
$_SESSION['PGT']=$PGT; // met le PGT EN SESSION
}
}
// procedure pour obtenir ou reobtenir un PT
if(!empty($_POST['BT_GET_PT'])){
$CAS = new CASClient(CAS_VERSION_2_0,TRUE,$cas_hostname,$cas_port,$cas_uri);// objet CAS en mode proxy
$auth = $CAS->isAuthenticated(); // test si deja authentifié (session applicative)
if(!$auth) $CAS->forceAuthentication(); // force l'authentification si pas authentifié
if($CAS->hasPGT()){ // si on a un PGT
$PT = $CAS->retrievePT($imap_service,$err_code,$output); // on récupère un PT
$_SESSION['PT']=$PT; // met le PT EN SESSION
}
}
// CONNEXION IMAP avec PT
if(!empty($_POST['BT_IMAP_PT'])){
$CAS = new CASClient(CAS_VERSION_2_0,TRUE,$cas_hostname,$cas_port,$cas_uri);// objet CAS en mode proxy
$auth = $CAS->isAuthenticated(); // test si deja authentifié (session applicative)
if($auth){ // test si deja authentifié (session applicative)
$USER=$CAS->getUser(); // recupere le login utilisateur
$CREDENTIAL=$_SESSION['PT'];
}else{
$err="Erreur vous devez deja avoir une session CAS (PT)";
}
}
// variable servant pour l'afficahge correct des boutons
if(!empty($PGT) || !empty($_SESSION['PGT'])){
$HAVE_PGT=true; // ON A UN PGT
}
if(!empty($PT) || !empty($_SESSION['PT'])){ // ON A UN PT
$HAVE_PT=true;
if (!empty($_SESSION['PT'])){
$CAS_UrlValidTicket = $CAS->getServerBaseURL() . "proxyValidate" . "?ticket=" . $_SESSION['PT'] . "&service=" . $imap_service;
}
}
// login classique IMAP avec user et pass
if(!empty($_POST['BT_IMAP_LOGIN'])){
if(!empty($_POST['USER_LOGIN']) && !empty($_POST['USER_PASS'])){
$USER=$_POST['USER_LOGIN'];
$_SESSION[USER]=$USER;
$CREDENTIAL=$_POST['USER_PASS'];
$_SESSION[PASSWORD]=$CREDENTIAL; // pas beau. C'est juste pour une demo
$classique=true;
}else{
$err="Erreur vous devez fournir un login et un mot de passe
pour une connexion classique.";
}
}
// SI ON A UN USER ET MDP ON TENTE UNE CONNEXION IMAP
if(!empty($USER) && !empty($CREDENTIAL)){
$mbox = @imap_open("{".$imap_server.":".$imap_port."}".$imap_box,$USER,$CREDENTIAL);
if (! $classique){
$messa = " - PT : $CREDENTIAL";
}
if(!$mbox){
$err="Erreur d'ouverture de connexion IMAP.
AVEC :
- USER : $USER$messa
";
}else{
$msg="Ouverture de connexion IMAP OK.
AVEC :
- USER : $USER$messa
";
}
}
?>