194,8 → 194,13 |
$acces = $this->verifierAcces($login, $password); |
if ($acces === false) { |
$this->detruireCookie(); |
if(!empty($_GET['redirect_url'])) { |
header('Location: '.$_GET['redirect_url']); |
} else { |
$this->erreur("authentication failed", 401); |
} |
|
} |
// infos utilisateur |
$util = new Utilisateur($this->config); |
$infos = $util->getIdentiteParCourriel($login); |
211,6 → 216,10 |
$jwt = $this->creerJeton($login, $infos[$login]); |
// création du cookie |
$this->creerCookie($jwt); |
|
if(!empty($_GET['redirect_url'])) { |
$this->redirigerAvecJeton($_GET['redirect_url'], $jwt); |
} else { |
// envoi |
$this->envoyerJson(array( |
"session" => true, |
220,6 → 229,7 |
"last_modif" => $infos[$login]['dateDerniereModif'] |
)); |
} |
} |
|
/** |
* Détruit le cookie et renvoie un jeton vide ou NULL - le client |
231,6 → 241,9 |
$this->detruireCookie(); |
// envoi d'un jeton null |
$jwt = null; |
if(!empty($_GET['redirect_url'])) { |
header('Location: '.$_GET['redirect_url']); |
} else { |
$this->envoyerJson(array( |
"session" => false, |
"token" => $jwt, |
237,6 → 250,7 |
"token_id" => $this->nomCookie |
)); |
} |
} |
|
/** |
* Renvoie un jeton rafraîchi (durée de validité augmentée de $this->dureeJeton |
292,6 → 306,13 |
$erreur = ($erreur == "" ? "no token or cookie" : "invalid token in cookie / invalid or expired token in Authorization header or parameter <token>"); |
} |
} |
if(!empty($_GET['redirect_url'])) { |
if ($jetonRetour != null) { |
$this->redirigerAvecJeton($_GET['redirect_url'], $jetonRetour); |
} else { |
header('Location: '.$_GET['redirect_url']); |
} |
} else { |
// renvoi jeton |
if ($jetonRetour === null) { |
$this->erreur($erreur); |
304,7 → 325,21 |
)); |
} |
} |
} |
|
protected function redirigerAvecJeton($url, $jetonRetour) { |
// dans le cas où une url de redirection est précisée, |
// on est généreux et on précise le jeton dans le header et le get |
if ($jetonRetour != null) { |
$url_redirection = $_GET['redirect_url']; |
$separateur = (parse_url($url_redirection, PHP_URL_QUERY) == NULL) ? '?' : '&'; |
$url_redirection .= $separateur.'Authorization='.$jetonRetour; |
header('Authorization: '.$jetonRetour); |
} |
header('Location: '.$url_redirection); |
exit; |
} |
|
/** |
* Vérifie si un jeton est valide; retourne true si oui, une erreur avec |
* des détails si non; |