/trunk/interfaces/controleurs/Test.php |
---|
45,41 → 45,44 |
* Affiche le formulaire de demande de traitement |
*/ |
public function afficherInterface() { |
$donnees = array(); |
$this->definirCommeModulePrincipal(get_class($this)); |
$this->url->unsetVariablesRequete(array('module', 'action', 'ref')); |
$donnees['url_form'] = $this->url->getUrl(); |
$donnees['url_module'] = 'Test'; |
$donnees['url_action_demande'] = 'demanderTraitement'; |
$donnees['url_action_rafraichir'] = 'afficherInterface'; |
// Traitement de l'info sur le code du référentiel |
if (isset($this->referentiel)) { |
$donnees['ref'] = $this->referentiel; |
// Recherche des traitements en attente |
$donnees['traitements_en_attente'] = $this->traitementDao->getTraitementsEnAttente($this->referentiel, self::SCRIPT_A_LANCER); |
if ($this->authentifierCoordinateur()) { |
$donnees = array(); |
$this->definirCommeModulePrincipal(get_class($this)); |
// Recherche des traitements en cours d'éxecution |
$donnees['traitements_en_cours'] = $this->traitementDao->getTraitementsEnCours($this->referentiel, self::SCRIPT_A_LANCER); |
$this->url->unsetVariablesRequete(array('module', 'action', 'ref')); |
$donnees['url_form'] = $this->url->getUrl(); |
$donnees['url_module'] = 'Test'; |
$donnees['url_action_demande'] = 'demanderTraitement'; |
$donnees['url_action_rafraichir'] = 'afficherInterface'; |
// Recherche des traitements déjà effectué |
$resultat = $this->traitementDao->getTraitementsTermines($this->referentiel, self::SCRIPT_A_LANCER); |
if (is_array($resultat)) { |
// Ajout de l'url vers la fiche du traitement |
foreach ($resultat as &$traitement) { |
$traitement['url'] = $this->obtenirUrlFicheTraitement($this->referentiel, $traitement['id_traitement']); |
// Traitement de l'info sur le code du référentiel |
if (isset($this->referentiel)) { |
$donnees['ref'] = $this->referentiel; |
// Recherche des traitements en attente |
$donnees['traitements_en_attente'] = $this->traitementDao->getTraitementsEnAttente($this->referentiel, self::SCRIPT_A_LANCER); |
// Recherche des traitements en cours d'éxecution |
$donnees['traitements_en_cours'] = $this->traitementDao->getTraitementsEnCours($this->referentiel, self::SCRIPT_A_LANCER); |
// Recherche des traitements déjà effectué |
$resultat = $this->traitementDao->getTraitementsTermines($this->referentiel, self::SCRIPT_A_LANCER); |
if (is_array($resultat)) { |
// Ajout de l'url vers la fiche du traitement |
foreach ($resultat as &$traitement) { |
$traitement['url'] = $this->obtenirUrlFicheTraitement($this->referentiel, $traitement['id_traitement']); |
} |
$donnees['traitements_termines'] = $resultat; |
} |
$donnees['traitements_termines'] = $resultat; |
} else { |
$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff)."); |
} |
} else { |
$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff)."); |
$donnees['messages'] = $this->getMessages(); |
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_tests', $donnees), false); |
$this->construireMenu($this->referentiel); |
$this->construireFilAriane($this->referentiel); |
} |
$donnees['messages'] = $this->getMessages(); |
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_tests', $donnees), false); |
$this->construireMenu($this->referentiel); |
$this->construireFilAriane($this->referentiel); |
} |
/** |
/trunk/interfaces/controleurs/Versionnage.php |
---|
49,52 → 49,54 |
* Affiche le formulaire de demande de versionnage |
*/ |
public function afficherInterface() { |
$donnees = array(); |
$this->definirCommeModulePrincipal(get_class($this)); |
// Paramêtres pour l'url du formulaire |
$this->url->unsetVariablesRequete(array('module', 'action', 'ref')); |
$donnees['url_form'] = $this->obtenirUrlDemandeVersionnage($this->referentiel); |
$donnees['url_module'] = 'Versionnage'; |
$donnees['url_action_rafraichir'] = 'afficherInterface'; |
$donnees['version'] = $this->instancierChampsVersionnage(); |
$donnees['version'] = $this->traiterCasesACocher($donnees['version']); |
// Récupération des paramètres de configuration du manuel des référentiels |
$donnees['domaine_geo'] = explode(';', $this->manuel['domaine_geo']); |
$donnees['domaine_taxo'] = explode(';', $this->manuel['domaine_taxo']); |
$donnees['domaine_code'] = explode(';', $this->manuel['domaine_code']); |
// Traitement de l'info sur le code du référentiel |
if (isset($this->referentiel)) { |
// Récupération du référentiel courrant |
$donnees['ref'] = $this->referentiel; |
if ($this->authentifierCoordinateur()) { |
$donnees = array(); |
$this->definirCommeModulePrincipal(get_class($this)); |
// Recherche des traitements en attente |
$donnees['traitements_en_attente'] = $this->traitementDao->getTraitementsEnAttente($this->referentiel, self::SCRIPT_A_LANCER); |
// Paramêtres pour l'url du formulaire |
$this->url->unsetVariablesRequete(array('module', 'action', 'ref')); |
$donnees['url_form'] = $this->obtenirUrlDemandeVersionnage($this->referentiel); |
$donnees['url_module'] = 'Versionnage'; |
$donnees['url_action_rafraichir'] = 'afficherInterface'; |
// Recherche des traitements en cours d'éxecution |
$donnees['traitements_en_cours'] = $this->traitementDao->getTraitementsEnCours($this->referentiel, self::SCRIPT_A_LANCER); |
$donnees['version'] = $this->instancierChampsVersionnage(); |
$donnees['version'] = $this->traiterCasesACocher($donnees['version']); |
// Recherche des traitements déjà effectué |
$resultat = $this->traitementDao->getTraitementsTermines($this->referentiel, self::SCRIPT_A_LANCER); |
if (is_array($resultat)) { |
// Ajout de l'url vers la fiche du traitement |
foreach ($resultat as &$traitement) { |
$traitement['url'] = $this->obtenirUrlFicheTraitement($this->referentiel, $traitement['id_traitement']); |
// Récupération des paramètres de configuration du manuel des référentiels |
$donnees['domaine_geo'] = explode(';', $this->manuel['domaine_geo']); |
$donnees['domaine_taxo'] = explode(';', $this->manuel['domaine_taxo']); |
$donnees['domaine_code'] = explode(';', $this->manuel['domaine_code']); |
// Traitement de l'info sur le code du référentiel |
if (isset($this->referentiel)) { |
// Récupération du référentiel courrant |
$donnees['ref'] = $this->referentiel; |
// Recherche des traitements en attente |
$donnees['traitements_en_attente'] = $this->traitementDao->getTraitementsEnAttente($this->referentiel, self::SCRIPT_A_LANCER); |
// Recherche des traitements en cours d'éxecution |
$donnees['traitements_en_cours'] = $this->traitementDao->getTraitementsEnCours($this->referentiel, self::SCRIPT_A_LANCER); |
// Recherche des traitements déjà effectué |
$resultat = $this->traitementDao->getTraitementsTermines($this->referentiel, self::SCRIPT_A_LANCER); |
if (is_array($resultat)) { |
// Ajout de l'url vers la fiche du traitement |
foreach ($resultat as &$traitement) { |
$traitement['url'] = $this->obtenirUrlFicheTraitement($this->referentiel, $traitement['id_traitement']); |
} |
$donnees['traitements_termines'] = $resultat; |
} |
$donnees['traitements_termines'] = $resultat; |
} else { |
$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff)."); |
} |
} else { |
$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff)."); |
$donnees['messages'] = $this->getMessages(); |
$this->traiterEsperluette($donnees); |
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_version', $donnees), false); |
$this->construireMenu($this->referentiel); |
$this->construireFilAriane($this->referentiel); |
} |
$donnees['messages'] = $this->getMessages(); |
$this->traiterEsperluette($donnees); |
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_version', $donnees), false); |
$this->construireMenu($this->referentiel); |
$this->construireFilAriane($this->referentiel); |
} |
public function instancierChampsVersionnage() { |
/trunk/interfaces/controleurs/AppliControleur.php |
---|
441,4 → 441,75 |
$disabled = explode(', ', ini_get('disable_functions')); |
return !in_array('exec', $disabled); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DU CLIENT REST |
protected function getRestClient() { |
if (! isset($this->restClient)) { |
$this->restClient = new RestClient(); |
} |
return $this->restClient; |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DE L'IDENTIFICATION |
protected function getAuthIdentifiant() { |
$id = (isset($_SERVER['PHP_AUTH_USER'])) ? $_SERVER['PHP_AUTH_USER'] : null; |
return $id; |
} |
protected function getAuthMotDePasse() { |
$mdp = (isset($_SERVER['PHP_AUTH_PW'])) ? $_SERVER['PHP_AUTH_PW'] : null; |
return $mdp; |
} |
public function authentifierCoordinateur() { |
$message_accueil = "Veuillez vous identifier avec votre compte Tela Botanica."; |
$message_echec = "Accès limité aux coordinateurs du projet.\n". |
"Votre tentative d'identification a échoué.\n". |
"Actualiser la page pour essayer à nouveau si vous êtes bien inscrit comme coordinateur."; |
return $this->authentifier($message_accueil, $message_echec); |
} |
private function authentifier($message_accueil, $message_echec) { |
$id = $this->getAuthIdentifiant(); |
if (!isset($id)) { |
$this->envoyerAuth($message_accueil, $message_echec); |
} else { |
$autorisation = $this->etreCoordinateurAutorise(); |
if ($autorisation == false) { |
$this->envoyerAuth($message_accueil, $message_echec); |
} |
} |
return true; |
} |
public function etreCoordinateurAutorise($identifiant) { |
$identifiant = $this->getAuthIdentifiant(); |
$mdp = md5($this->getAuthMotDePasse()); |
$url = sprintf(Config::get('authentification.serviceUrlTpl'), $identifiant, $mdp); |
$json = $this->getRestClient()->envoyerRequeteConsultation($url); |
$existe = json_decode($json); |
$admin = $this->etreCoordinateur($identifiant) ? true : false; |
$autorisation = ($existe && $admin) ? true : false; |
return $autorisation; |
} |
public function etreCoordinateur($courriel) { |
$coordinateurs = Config::get('authentification.coordinateurs'); |
$courriels_autorises = explode(',', $coordinateurs); |
$autorisation = (in_array($courriel, $courriels_autorises)) ? true : false ; |
return $autorisation; |
} |
private function envoyerAuth($message_accueil, $message_echec) { |
header('HTTP/1.0 401 Unauthorized'); |
header('WWW-Authenticate: Basic realm="'.mb_convert_encoding($message_accueil, 'ISO-8859-1', 'UTF-8').'"'); |
header('Content-type: text/plain; charset=UTF-8'); |
print $message_echec; |
exit(0); |
} |
} |