Subversion Repositories Applications.annuaire

Compare Revisions

Regard whitespace Rev 569 → Rev 570

/branches/v1.4-baleine/jrest/services/Auth.php
194,25 → 194,20
$acces = $this->verifierAcces($login, $password);
if ($acces === false) {
$this->detruireCookie();
if(!empty($_GET['redirect_url'])) {
header('Location: '.$_GET['redirect_url']);
exit;
} else {
// 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);
if (count($infos) == 0 || empty($infos[$login])) {
if(!empty($_GET['redirect_url'])) {
header('Location: '.$_GET['redirect_url']);
exit;
} else {
// 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
222,10 → 217,8
$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 {
// redirection si demandée - se charge de sortir du script en cas de succès
$this->rediriger($jwt);
// envoi
$this->envoyerJson(array(
"session" => true,
235,7 → 228,6
"last_modif" => $infos[$login]['dateDerniereModif']
));
}
}
 
/**
* Détruit le cookie et renvoie un jeton vide ou NULL - le client
247,9 → 239,9
$this->detruireCookie();
// envoi d'un jeton null
$jwt = null;
if(!empty($_GET['redirect_url'])) {
header('Location: '.$_GET['redirect_url']);
} else {
// 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,
256,7 → 248,6
"token_id" => $this->nomCookie
));
}
}
 
/**
* Renvoie un jeton rafraîchi (durée de validité augmentée de $this->dureeJeton
312,13 → 303,8
$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 {
// 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);
331,13 → 317,20
));
}
}
}
protected function redirigerAvecJeton($url, $jetonRetour) {
/**
* 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
* et dans le header "Authorization"); 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 est généreux et on précise le jeton dans le header et le get
if ($jetonRetour != null) {
$url_redirection = $_GET['redirect_url'];
if ($jetonRetour !== null) {
$separateur = (parse_url($url_redirection, PHP_URL_QUERY) == NULL) ? '?' : '&';
$url_redirection .= $separateur.'Authorization='.$jetonRetour;
header('Authorization: '.$jetonRetour);
345,6 → 338,7
header('Location: '.$url_redirection);
exit;
}
}
 
/**
* Vérifie si un jeton est valide; retourne true si oui, une erreur avec