Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 579 → Rev 578

/trunk/jrest/services/auth/AuthPartner.php
File deleted
\ No newline at end of file
/trunk/jrest/services/auth/AuthPartnerPlantnet.php
File deleted
/trunk/jrest/services/Auth.php
187,33 → 187,11
protected function connexion($ressources) {
$login = $this->getParam('login');
$password = $this->getParam('password', null);
$partenaire = $this->getParam('partner');
if ($login == '' || $password == '') {
$this->erreur("parameters <login> and <password> required");
}
$acces = false;
$objAuth = null;
// connexion à un partenaire ?
if ($partenaire != '') {
$classeAuth = "AuthPartner" . ucfirst(strtolower($partenaire));
try {
$fichierClasse = "auth/$classeAuth.php";
/*if (! file_exists($fichierClasse)) {
$this->erreur('unknown partner "' . $partenaire . '"');
}*/
require $fichierClasse;
$objAuth = new $classeAuth($this);
// authentification par le partenaire
$acces = $objAuth->verifierAcces($login, $password);
} catch(Exception $e) {
$this->erreur($e->getMessage(), 500);
}
} else {
// authentification locale
$acces = $this->verifierAcces($login, $password);
// faux polylmorphisme pour éviter des "if" partout
$objAuth = new Utilisateur($this->config);
}
// vérification login / password
$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
222,7 → 200,8
$this->erreur("authentication failed", 401);
}
// infos utilisateur
$infos = $objAuth->getIdentiteParCourriel($login);
$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])) {
232,9 → 211,9
$this->erreur("could not get user info");
}
// nom Wiki
$infos[$login]['nomWiki'] = $objAuth->formaterNomWiki($infos[$login], "UnknownWikiName");
// date de dernière modification du profil
$dateDerniereModif = $objAuth->getDateDerniereModifProfil($infos[$login]['id'], true);
$infos[$login]['nomWiki'] = $util->formaterNomWiki($infos[$login], "UnknownWikiName");
// date de dernière modification du profi
$dateDerniereModif = $util->getDateDerniereModifProfil($infos[$login]['id'], true);
$infos[$login]['dateDerniereModif'] = $dateDerniereModif;
// création du jeton
$jwt = $this->creerJeton($login, $infos[$login]);
414,7 → 393,7
// décodage d'un jeton expiré
// @WARNING considère que la lib JWT jette ExpiredException en dernier (vrai 12/05/2015),
// ce qui signifie que la signature et le domaine sont tout de même valides - à surveiller !
$infos = $this->decoderJetonManuellement($jwt);
$infos = $this->decoderJetonExpireManuellement($jwt);
} else {
// on renvoie l'exception plus haut
throw $e;
436,10 → 415,10
* Décode manuellement un jeton JWT, SANS VÉRIFIER SA SIGNATURE OU
* SON DOMAINE ! @WARNING ne pas utiliser hors du cas d'un jeton
* correct (vérifié avec la lib JWT) mais expiré !
* Public car utilisé par les classes AuthPartner (@TODO stratégie à valider)
*
* @param string $jwt un jeton vérifié comme valide, mais expiré
*/
public function decoderJetonManuellement($jwt) {
protected function decoderJetonExpireManuellement($jwt) {
$parts = explode('.', $jwt);
$payload = $parts[1];
$payload = base64_decode($payload);