194,23 → 194,25 |
$acces = $this->verifierAcces($login, $password); |
if ($acces === false) { |
$this->detruireCookie(); |
// redirection si demandée - se charge de sortir du script en cas de succès |
$this->rediriger(); |
// si la redirection n'a pas eu lieu |
// redirection si demandée - se charge de sortir du script en cas de succès |
$this->rediriger(); |
// si la redirection n'a pas eu lieu |
$this->erreur("authentication failed", 401); |
} |
// infos utilisateur |
$util = new Utilisateur($this->config); |
$infos = $util->getIdentiteParCourriel($login); |
// getIdentiteParCourriel retourne toujours le courriel comme clef de tableau en lowercase |
$login = strtolower($login); |
if (count($infos) == 0 || empty($infos[$login])) { |
// redirection si demandée - se charge de sortir du script en cas de succès |
$this->rediriger(); |
// si la redirection n'a pas eu lieu |
// redirection si demandée - se charge de sortir du script en cas de succès |
$this->rediriger(); |
// si la redirection n'a pas eu lieu |
$this->erreur("could not get user info"); |
} |
// nom Wiki |
$infos[$login]['nomWiki'] = $util->formaterNomWiki($infos[$login], "UnknownWikiName"); |
// date de dernière modification du profil |
// date de dernière modification du profi |
$dateDerniereModif = $util->getDateDerniereModifProfil($infos[$login]['id'], true); |
$infos[$login]['dateDerniereModif'] = $dateDerniereModif; |
// création du jeton |
217,8 → 219,8 |
$jwt = $this->creerJeton($login, $infos[$login]); |
// création du cookie |
$this->creerCookie($jwt); |
// redirection si demandée - se charge de sortir du script en cas de succès |
$this->rediriger($jwt); |
// redirection si demandée - se charge de sortir du script en cas de succès |
$this->rediriger($jwt); |
// envoi |
$this->envoyerJson(array( |
"session" => true, |
239,13 → 241,13 |
$this->detruireCookie(); |
// envoi d'un jeton null |
$jwt = null; |
// redirection si demandée - se charge de sortir du script en cas de succès |
$this->rediriger(); |
// si la redirection n'a pas eu lieu |
// redirection si demandée - se charge de sortir du script en cas de succès |
$this->rediriger(); |
// si la redirection n'a pas eu lieu |
$this->envoyerJson(array( |
"session" => false, |
"token" => $jwt, |
"token_id" => $this->nomCookie |
"session" => false, |
"token" => $jwt, |
"token_id" => $this->nomCookie |
)); |
} |
|
302,48 → 304,48 |
// pas de jeton valide passé en paramètre |
$erreur = ($erreur == "" ? "no token or cookie" : "invalid token in cookie / invalid or expired token in Authorization header or parameter <token>"); |
} |
} |
// redirection si demandée - se charge de sortir du script en cas de succès |
$this->rediriger($jetonRetour); |
} |
// redirection si demandée - se charge de sortir du script en cas de succès |
$this->rediriger($jetonRetour); |
// renvoi jeton |
if ($jetonRetour === null) { |
$this->erreur($erreur); |
} else { |
$this->envoyerJson(array( |
"session" => true, |
"token" => $jetonRetour, |
"duration" => intval($this->dureeJeton), |
"token_id" => $this->nomCookie |
"session" => true, |
"token" => $jetonRetour, |
"duration" => intval($this->dureeJeton), |
"token_id" => $this->nomCookie |
)); |
} |
} |
|
/** |
* Si $_GET['redirect_url'] est non-vide, redirige vers l'URL qu'il contient et sort du programme; |
* sinon, ne fait rien et passe la main |
* |
* @param string $jetonRetour jeton JWT à passer à l'URL de destination |
* en GET; par défaut null |
*/ |
protected function rediriger($jetonRetour=null) { |
if (!empty($_GET['redirect_url'])) { |
// dans le cas où une url de redirection est précisée, |
// on précise le jeton dans le get |
$url_redirection = $_GET['redirect_url']; |
|
// même si le jeton est vide, on ajoute un paramètre GET Authorization |
// pour spécifier à la cible qu'on a bien traité sa requête - permet |
// aussi de gérer les déconnexions en renvoyant un jeton vide |
$separateur = (parse_url($url_redirection, PHP_URL_QUERY) == NULL) ? '?' : '&'; |
$url_redirection .= $separateur.'Authorization='.$jetonRetour; |
|
// retour à l'envoyeur ! |
header('Location: '.$url_redirection); |
exit; |
} |
} |
|
/** |
* Si $_GET['redirect_url'] est non-vide, redirige vers l'URL qu'il contient et sort du programme; |
* sinon, ne fait rien et passe la main |
* |
* @param string $jetonRetour jeton JWT à passer à l'URL de destination |
* en GET; par défaut null |
*/ |
protected function rediriger($jetonRetour=null) { |
if (!empty($_GET['redirect_url'])) { |
// dans le cas où une url de redirection est précisée, |
// on précise le jeton dans le get |
$url_redirection = $_GET['redirect_url']; |
|
// même si le jeton est vide, on ajoute un paramètre GET Authorization |
// pour spécifier à la cible qu'on a bien traité sa requête - permet |
// aussi de gérer les déconnexions en renvoyant un jeton vide |
$separateur = (parse_url($url_redirection, PHP_URL_QUERY) == NULL) ? '?' : '&'; |
$url_redirection .= $separateur.'Authorization='.$jetonRetour; |
|
// retour à l'envoyeur ! |
header('Location: '.$url_redirection); |
exit; |
} |
} |
|
/** |
* Vérifie si un jeton est valide; retourne true si oui, une erreur avec |
* des détails si non; |
* Priorité : header "Authorization" > paramètre "token" |
657,4 → 659,4 |
} |
return $code; |
} |
} |
} |