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); |
} |
|