Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 577 → Rev 578

/branches/v1.4-baleine/jrest/services/Auth.php
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;
}
}
}