New file |
0,0 → 1,84 |
<?php |
|
require "AuthPartner.php"; |
|
/** |
* Permet de se connecter à l'annuaire de Tela Botanica à l'aide d'un compte eRecolnat |
* à travers le CAS de Brice (https://cas.recolnat.org) |
* |
* // POST https://cas.recolnat.org/v1/tickets -H 'Content-Type: application/x-www-form-urlencoded' --data 'username=mchouet&password=mat87cho' |
* // => 400 ou 201 |
* => GET https://api.recolnat.org/erecolnat/v1/users/login/mchouet |
*/ |
class AuthPartnerRecolnat extends AuthPartner { |
|
public function verifierAcces($login, $password) { |
$login = urlencode($login); // pour les espaces dans le nom d'utilisateur |
$password = urlencode($password); |
$url = "https://cas.recolnat.org/v1/tickets"; |
|
$curl = curl_init(); |
curl_setopt($curl, CURLOPT_URL, $url); |
curl_setopt($curl, CURLOPT_POST, true); |
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); |
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); |
curl_setopt($curl, CURLOPT_POSTFIELDS, "username=$login&password=$password"); |
$res = curl_exec($curl); |
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); |
curl_close($curl); |
|
//var_dump($httpCode); exit; |
if ($httpCode == 201) { // un ticket a été créé, l'utilisateur existe |
// récupération des infos utilisateur |
// (attention, répond même si l'authentification a échoué !) |
$url = "https://api.recolnat.org/erecolnat/v1/users/login/$login"; |
$curl = curl_init(); |
curl_setopt($curl, CURLOPT_URL, $url); |
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); |
$res = curl_exec($curl); |
curl_close($curl); |
|
$res = json_decode($res, true); |
//var_dump($res); exit; |
if ($res != null) { |
$this->jetonPartenaire = $res; // pas vraiment un jeton... |
// stockage pour traitement dans les autres méthodes |
$this->data = $res; |
//var_dump($this->data); exit; |
if ( !empty($this->data['email'])) { |
//var_dump($this->data['email']); |
return true; |
} |
} |
} |
return false; |
} |
|
protected function getNomPartenaire() { |
return "recolnat"; |
} |
|
public function getCourriel() { |
return $this->data['email']; |
} |
|
protected function getId() { |
// le "login" est le "username" dans eRecolnat, mais il y a aussi |
// un "user_id" et un "user_uuid"... @TODO valider cette stratégie |
return $this->data['login']; |
} |
|
protected function getValeursProfilPartenaire() { |
return array( |
// @WARNING "firstname" et "lastname" semblent inversés |
'nom' => $this->data['firstname'], |
'prenom' => $this->data['lastname'], |
'email' => $this->data['email'], |
'pseudo' => $this->data['login'] // @TODO valider cette stratégie |
); |
} |
|
/*public function getTimestampMajPartenaire() { |
return 420000000000; |
}*/ |
} |