Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 562 → Rev 563

/trunk/jrest/services/Auth.php
193,24 → 193,19
$acces = $this->verifierAcces($login, $password);
if ($acces === false) {
$this->detruireCookie();
if(!empty($_GET['redirect_url'])) {
header('Location: '.$_GET['redirect_url']);
exit;
} else {
$this->erreur("authentication failed", 401);
}
 
// 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 {
$this->erreur("could not get user info");
}
// 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");
221,19 → 216,16
$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,
"token" => $jwt,
"duration" => intval($this->dureeJeton),
"token_id" => $this->nomCookie,
"last_modif" => $infos[$login]['dateDerniereModif']
));
}
// redirection si demandée - se charge de sortir du script en cas de succès
$this->rediriger($jwt);
// envoi
$this->envoyerJson(array(
"session" => true,
"token" => $jwt,
"duration" => intval($this->dureeJeton),
"token_id" => $this->nomCookie,
"last_modif" => $infos[$login]['dateDerniereModif']
));
}
 
/**
246,15 → 238,14
$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,
"token_id" => $this->nomCookie
));
}
// 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
));
}
 
/**
310,39 → 301,42
// 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>");
}
}
if(!empty($_GET['redirect_url'])) {
if ($jetonRetour != null) {
$this->redirigerAvecJeton($_GET['redirect_url'], $jetonRetour);
} else {
header('Location: '.$_GET['redirect_url']);
}
}
// 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 {
// renvoi jeton
if ($jetonRetour === null) {
$this->erreur($erreur);
} else {
$this->envoyerJson(array(
"session" => true,
"token" => $jetonRetour,
"duration" => intval($this->dureeJeton),
"token_id" => $this->nomCookie
));
}
$this->envoyerJson(array(
"session" => true,
"token" => $jetonRetour,
"duration" => intval($this->dureeJeton),
"token_id" => $this->nomCookie
));
}
}
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) {
 
/**
* 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
$url_redirection = $_GET['redirect_url'];
$separateur = (parse_url($url_redirection, PHP_URL_QUERY) == NULL) ? '?' : '&';
$url_redirection .= $separateur.'Authorization='.$jetonRetour;
header('Authorization: '.$jetonRetour);
if ($jetonRetour !== null) {
$separateur = (parse_url($url_redirection, PHP_URL_QUERY) == NULL) ? '?' : '&';
$url_redirection .= $separateur.'Authorization='.$jetonRetour;
header('Authorization: '.$jetonRetour);
}
header('Location: '.$url_redirection);
exit;
}
header('Location: '.$url_redirection);
exit;
}
 
/**