nomCookieSSO = $conteneur->getParametre('auth.nomCookieSSO');
//$this->urlServiceAnnuaire = $conteneur->getParametre('baseUrlServicesAnnuaireTpl');
$this->urlConnexionSite = $conteneur->getParametre('auth.baseUrlConnexionSite');
$this->lireCookieSSO();
}
/**
* Retourne l'adresse email de l'utilisateur actuellement identifié
*/
public function getCourriel() {
return $this->courriel;
}
/**
* Retourne true si l'utilisateur est en possession d'un cookie qui
* l'identifie
*/
public function estIdentifie() {
return $this->identifie;
}
/**
* Retourne l'URL de connexion au SSO
*/
public function getUrlConnexion() {
return $this->urlConnexionSite;
}
protected function lireCookieSSO() {
if (isset($_COOKIE[$this->nomCookieSSO])) {
$jeton = $_COOKIE[$this->nomCookieSSO];
// On ne valide pas le jeton car il vient directement du cookie
// (supposé être sur HTTPS uniquement)
$jetonDecode = $this->decoderJeton($jeton);
//var_dump($jetonDecode); echo "
";
if ($jetonDecode && ! empty($jetonDecode['sub'])) {
$this->courriel = $jetonDecode['sub'];
$this->identifie = true;
}
}
}
/**
* Décode un jeton SSO et retourne son contenu
*/
protected function decoderJeton($jeton) {
$parts = explode('.', $jeton);
$payload = $parts[1];
$payload = $this->urlsafeB64Decode($payload);
$payload = json_decode($payload, true);
return $payload;
}
/**
* Décode le base64 de manière "urlsafe" (copié de la lib JWT)
*/
protected function urlsafeB64Decode($input) {
$remainder = strlen($input) % 4;
if ($remainder) {
$padlen = 4 - $remainder;
$input .= str_repeat('=', $padlen);
}
return base64_decode(strtr($input, '-_', '+/'));
}
}