Rev 1054 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Donne l'utilisateur en cours s'il est connecté, en lisant le cookie SSO** Pour l'instant, utilisé uniquement dans popup_contact*/class Utilisateur {protected $nomCookieSSO = '';//protected $urlServiceAnnuaire = '';protected $urlConnexionSite = '';protected $identifie = false;protected $courriel = null;public function __construct(Conteneur $conteneur) {$this->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 "<br><br>";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, '-_', '+/'));}}