Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3026 → Rev 3027

/trunk/jrest/bibliotheque/GestionUtilisateur.php
15,7 → 15,10
* @copyright 1999-2015 Tela Botanica <accueil@tela-botanica.org>
*/
class GestionUtilisateur extends Cel {
 
/** contient le jeton SSO décodé, si une authentification a eu lieu avec succès */
protected $token_decode;
 
public function obtenirIdentiteConnectee() {
$login_utilisateur = $this->getLoginUtilisateurVerifie();
if ($login_utilisateur) {
35,29 → 38,30
}
return $utilisateur;
}
 
private function chargerInfosUtilisateur($login) {
//var_dump($this->token_decode);
$requete = 'SELECT * '.
'FROM cel_utilisateurs AS cu '.
'FROM cel_utilisateurs_infos AS cu '.
'WHERE courriel = '.Cel::db()->proteger($login).' '.
' -- '.__FILE__.':'.__LINE__;
$resultats = Cel::db()->requeter($requete);
 
$retour = false;
if (is_array($resultats) && count($resultats) > 0) {
$retour = $resultats[0];
}
if (is_array($retour) && ($retour['date_premiere_utilisation'] == NULL || $retour['date_premiere_utilisation'] == '0000-00-00 00:00:00')) {
$this->initialiserInfosUtilisateur($retour['id_utilisateur']);
} else {
// première connexion au CeL !
$this->initialiserInfosUtilisateur();
$this->affecterDonneesWidgetSaisie($login, $retour);
}
// booleanisation des valeurs
$retour['admin'] = ($retour['admin'] == 1);
$retour['licence_acceptee'] = (isset($retour['licence_acceptee']) && ($retour['licence_acceptee'] == 1));
 
return $retour;
}
 
private function utilisateurEstAutorise($id_utilisateur) {
$autorise = false;
$token = $this->getToken();
72,7 → 76,7
$autorise = true;
} else {
// Sinon on vérifie que l'utilisateur est admin
$requete = "SELECT admin FROM cel_utilisateurs WHERE id_utilisateur = ".Cel::db()->proteger($token_decode['id']);
$requete = "SELECT admin FROM cel_utilisateurs_infos WHERE id_utilisateur = ".Cel::db()->proteger($token_decode['id']);
$resultat = Cel::db()->requeter($requete);
$admin = false;
98,7 → 102,8
// @TODO CHANGER !
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $this->config['identification']['sso_url'].'/verifierjeton?token='.$token);
$url = $this->config['identification']['sso_url'].'/verifierjeton?token='.$token;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
// équivalent de "-k"
113,6 → 118,8
return $login;
}
 
// @WTF doublon avec la méthode du dessus ? Qu'est-ce que c'est que ce bins ?
protected function verifierJeton($jeton) {
$urlServiceVerification = $this->conteneur->getParametre("urlServiceBaseAuth") . "verifierjeton";
$urlServiceVerification .= "?token=" . $jeton;
160,8 → 167,8
}
private function obtenirLoginParToken($token) {
$token_decode = $this->decoderToken($token);
return $token_decode['sub'];
$this->token_decode = $this->decoderToken($token);
return $this->token_decode['sub'];
}
private function getToken() {
189,14 → 196,24
'admin' => false
);
}
private function initialiserInfosUtilisateur($id_utilisateur) {
$requete = 'INSERT INTO cel_utilisateurs_infos '.
'(id_utilisateur, admin, licence_acceptee, preferences, date_premiere_utilisation ) '.
'VALUES '.
'('.Cel::db()->proteger($id_utilisateur).", '0', '0', NULL, NOW()) ".
'ON DUPLICATE KEY UPDATE date_premiere_utilisation = NOW() '.
' -- '.__FILE__.':'.__LINE__;
 
/**
* Lors de la première connexion au CeL, remplis la table cel_utilisateurs_infos avec
* les données du jeton SSO
*/
private function initialiserInfosUtilisateur() {
$requete = 'INSERT INTO cel_utilisateurs_infos'
. ' (id_utilisateur, intitule, prenom, nom, courriel, admin, licence_acceptee, preferences, date_premiere_utilisation )'
. ' VALUES ('
. Cel::db()->proteger($this->token_decode['id']) . ', '
. Cel::db()->proteger($this->token_decode['intitule']) . ', '
. Cel::db()->proteger($this->token_decode['prenom']) . ', '
. Cel::db()->proteger($this->token_decode['nom']) . ', '
. Cel::db()->proteger($this->token_decode['sub']) . ', '
. "'0', '0', NULL, NOW()"
. ' ) ON DUPLICATE KEY UPDATE date_premiere_utilisation = NOW()'
. ' -- '.__FILE__.':'.__LINE__
;
Cel::db()->executer($requete);
}