Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Rev 1054 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
291 jpm 1
<?php
1507 mathias 2
 
3
/**
4
 * Donne l'utilisateur en cours s'il est connecté, en lisant le cookie SSO
5
 *
6
 * Pour l'instant, utilisé uniquement dans popup_contact
7
 */
291 jpm 8
class Utilisateur {
9
 
1507 mathias 10
	protected $nomCookieSSO = '';
11
	//protected $urlServiceAnnuaire = '';
12
	protected $urlConnexionSite = '';
13
	protected $identifie = false;
14
	protected $courriel = null;
291 jpm 15
 
520 jpm 16
	public function __construct(Conteneur $conteneur) {
1507 mathias 17
		$this->nomCookieSSO = $conteneur->getParametre('auth.nomCookieSSO');
18
		//$this->urlServiceAnnuaire = $conteneur->getParametre('baseUrlServicesAnnuaireTpl');
19
		$this->urlConnexionSite = $conteneur->getParametre('auth.baseUrlConnexionSite');
20
		$this->lireCookieSSO();
520 jpm 21
	}
291 jpm 22
 
1507 mathias 23
	/**
24
	 * Retourne l'adresse email de l'utilisateur actuellement identifié
25
	 */
26
	public function getCourriel() {
27
		return $this->courriel;
291 jpm 28
	}
29
 
1507 mathias 30
	/**
31
	 * Retourne true si l'utilisateur est en possession d'un cookie qui
32
	 * l'identifie
33
	 */
34
	public function estIdentifie() {
35
		return $this->identifie;
291 jpm 36
	}
37
 
1507 mathias 38
	/**
39
	 * Retourne l'URL de connexion au SSO
40
	 */
41
	public function getUrlConnexion() {
42
		return $this->urlConnexionSite;
291 jpm 43
	}
44
 
1507 mathias 45
	protected function lireCookieSSO() {
46
		if (isset($_COOKIE[$this->nomCookieSSO])) {
47
			$jeton = $_COOKIE[$this->nomCookieSSO];
48
			// On ne valide pas le jeton car il vient directement du cookie
49
			// (supposé être sur HTTPS uniquement)
50
			$jetonDecode = $this->decoderJeton($jeton);
51
			//var_dump($jetonDecode); echo "<br><br>";
52
			if ($jetonDecode && ! empty($jetonDecode['sub'])) {
53
				$this->courriel = $jetonDecode['sub'];
54
				$this->identifie = true;
55
			}
56
		}
520 jpm 57
	}
291 jpm 58
 
1507 mathias 59
	/**
60
	 * Décode un jeton SSO et retourne son contenu
61
	 */
62
    protected function decoderJeton($jeton) {
63
        $parts = explode('.', $jeton);
64
        $payload = $parts[1];
65
        $payload = $this->urlsafeB64Decode($payload);
66
        $payload = json_decode($payload, true);
520 jpm 67
 
1507 mathias 68
        return $payload;
69
    }
520 jpm 70
 
1507 mathias 71
    /**
72
     * Décode le base64 de manière "urlsafe" (copié de la lib JWT)
73
     */
74
    protected function urlsafeB64Decode($input) {
75
        $remainder = strlen($input) % 4;
76
        if ($remainder) {
77
            $padlen = 4 - $remainder;
78
            $input .= str_repeat('=', $padlen);
79
        }
80
        return base64_decode(strtr($input, '-_', '+/'));
81
    }
520 jpm 82
 
83
}