/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/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/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] != '*') { |
/trunk/doc/bdd/2017-03-20_suppression_cel_utilisateurs/suppression_cel_utilisateurs.sql |
---|
New file |
0,0 → 1,13 |
-- suppression de la vue cel_utilisateurs et enrichissement de la table cel_utilisateurs_infos |
ALTER TABLE cel_utilisateurs_infos ADD COLUMN courriel VARCHAR(128) AFTER id_utilisateur; |
ALTER TABLE cel_utilisateurs_infos ADD COLUMN nom VARCHAR(32) AFTER id_utilisateur; |
ALTER TABLE cel_utilisateurs_infos ADD COLUMN prenom VARCHAR(32) AFTER id_utilisateur; |
ALTER TABLE cel_utilisateurs_infos ADD COLUMN intitule VARCHAR(128) AFTER id_utilisateur; |
-- recollage des prénoms, noms, courriels, tant qu'on a encore l'ancien annuaire sous le coude |
UPDATE cel_utilisateurs_infos SET prenom = (SELECT U_SURNAME FROM tela_prod_v4.annuaire_tela WHERE U_ID = id_utilisateur); |
UPDATE cel_utilisateurs_infos SET nom = (SELECT U_NAME FROM tela_prod_v4.annuaire_tela WHERE U_ID = id_utilisateur); |
UPDATE cel_utilisateurs_infos SET courriel = (SELECT U_MAIL FROM tela_prod_v4.annuaire_tela WHERE U_ID = id_utilisateur) |
-- recollage des intitulés (lent et facultatif) |
UPDATE cel_utilisateurs_infos SET intitule = (SELECT IF ((SELECT amv_valeur FROM tela_prod_v4.annu_meta_valeurs WHERE amv_ce_colonne = 136 AND amv_cle_ligne = tela_prod_v4.annuaire_tela.U_ID ORDER BY amv_valeur DESC LIMIT 1) = 1, (SELECT amv_valeur FROM tela_prod_v4.annu_meta_valeurs WHERE amv_ce_colonne = 99 AND amv_cle_ligne = tela_prod_v4.annuaire_tela.U_ID), CONCAT(U_SURNAME, ' ', U_NAME)) AS intitule FROM tela_prod_v4.annuaire_tela WHERE U_ID = id_utilisateur); |