Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3026 → Rev 3027

/trunk/jrest/bibliotheque/Cel.php
360,7 → 360,7
if(isset($_SESSION['user']) && isset($_SESSION['user']['admin']) && $_SESSION['user']['id_utilisateur'] == $id) {
$admin = $_SESSION['user']['admin'];
} else {
$requete = "SELECT admin FROM cel_utilisateurs WHERE id_utilisateur = ".Cel::db()->proteger($id);
$requete = "SELECT admin FROM cel_utilisateurs_infos WHERE id_utilisateur = ".Cel::db()->proteger($id);
$resultat = Cel::db()->requeter($requete);
 
$admin = false;
377,7 → 377,7
if(isset($_SESSION['user']) && isset($_SESSION['user']['admin']) && $_SESSION['user']['courriel'] == $courriel) {
$admin = $_SESSION['user']['admin'];
} else {
$requete = "SELECT admin FROM cel_utilisateurs WHERE courriel = ".Cel::db()->proteger($courriel);
$requete = "SELECT admin FROM cel_utilisateurs_infos WHERE courriel = ".Cel::db()->proteger($courriel);
$resultat = Cel::db()->requeter($requete);
 
$admin = false;
393,7 → 393,7
if (is_numeric($id_utilisateur)) {
$idUtilisateurP = Cel::db()->proteger($id_utilisateur);
$requete = 'SELECT prenom, nom, courriel '.
'FROM cel_utilisateurs '.
'FROM cel_utilisateurs_infos '.
"WHERE id_utilisateur = $idUtilisateurP ".
' -- ' . __FILE__ . ':' . __LINE__;
$resultat = Cel::db()->requeter($requete);
410,7 → 410,7
 
$mailUtilisateurP = Cel::db()->proteger($mail_utilisateur);
$requete = 'SELECT id_utilisateur as id, prenom, nom '.
'FROM cel_utilisateurs '.
'FROM cel_utilisateurs_infos '.
"WHERE courriel = $mailUtilisateurP ".
' -- ' . __FILE__ . ':' . __LINE__;
 
/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);
}
/trunk/jrest/bibliotheque/GestionImage.php
250,7 → 250,7
* @param string $id_utilisateur
*/
public function migrerImagesMailVersId($mail_utilisateur, $infos_utilisateur) {
// ATTENTION : cette fonction suppose que l'utilisateur n'ai pas déjà d'images dans le CEL
// ATTENTION : cette fonction suppose que l'utilisateur n'a pas déjà d'images dans le CEL
// avec l'identifiant $id_utilisateur ce qui est normalement le cas
$requete = 'UPDATE cel_images SET '.
'ce_utilisateur = '.Cel::db()->proteger($infos_utilisateur['id_utilisateur']).', '.
/trunk/jrest/services/InventoryUserList.php
20,10 → 20,9
public function getElement($uid) {
$this->controleUtilisateur($uid[0]);
 
$requete = 'SELECT DISTINCT id_utilisateur, courriel FROM cel_utilisateurs '.
$this->construireRequeteConditionTableUtilisateurs($uid).' '.
'UNION '.
'SELECT DISTINCT ce_utilisateur as id_utilisateur, courriel_utilisateur as courriel '.
// Découplage de l'annuaire TB (suppression de la lecture dans cel_utilisateurs)
// @TODO vérifier que ça n'impacte que la liste d'usurpation d'identité pour les admins (on peut s'en passer)
$requete = 'SELECT DISTINCT ce_utilisateur as id_utilisateur, courriel_utilisateur as courriel '.
'FROM cel_obs '.
$this->construireRequeteConditionTableObs($uid).' '.
'LIMIT 0,50 '.
58,14 → 57,6
}
}
 
private function construireRequeteConditionTableUtilisateurs($params) {
$condition = '';
if (isset($params[1]) && $params[1] != null && $params[1] != '*') {
$condition .= ' WHERE courriel LIKE '.Cel::db()->proteger($params[1].'%');
}
return $condition;
}
 
private function construireRequeteConditionTableObs($params) {
$condition = '';
if (isset($params[1]) && $params[1] != null && $params[1] != '*') {