* 
 * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ;
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */

if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');}
$TITRE = html(Lang::_("Mode d'identification / Connecteur ENT"));

require(CHEMIN_DOSSIER_INCLUDE.'tableau_sso.php');

if(IS_HEBERGEMENT_SESAMATH)
{
  if(!is_file(CHEMIN_FICHIER_WS_SESAMATH_ENT))
  {
    echo'<p class="danger">Le fichier &laquo;&nbsp;<b>'.FileSystem::fin_chemin(CHEMIN_FICHIER_WS_SESAMATH_ENT).'</b>&nbsp;&raquo; (uniquement présent sur le serveur Sésamath) n\'a pas été détecté !</p>'.NL;
    return; // Ne pas exécuter la suite de ce fichier inclus.
  }  
  require(CHEMIN_FICHIER_WS_SESAMATH_ENT); // Charge les tableaux   $tab_connecteurs_hebergement & $tab_connecteurs_convention
}
else
{
  $tab_connecteurs_hebergement = $tab_connecteurs_convention = array();
}

// Javascript
Layout::add( 'js_inline_before' , 'var IS_HEBERGEMENT_SESAMATH = '.(int)IS_HEBERGEMENT_SESAMATH.';' );
Layout::add( 'js_inline_before' , 'var CONVENTION_ENT_REQUISE  = '.(int)CONVENTION_ENT_REQUISE.';' );
Layout::add( 'js_inline_before' , 'var tab_param = new Array();' );

// Séparer le sous-domaine et le domaine du HOST (besoin pour les ENT avec un serveur par établissement, comme ceux du projet ENVOLE sur serveur SCRIBE).
Exemplo n.º 2
0
 require(CHEMIN_DOSSIER_INCLUDE.'tableau_sso.php');
 if(!isset($tab_connexion_info[$connexion_mode][$connexion_ref]))
 {
   exit_error( 'Paramètres CAS anormaux' /*titre*/ , 'Les paramètres CAS sont anormaux (connexion_mode vaut "'.$connexion_mode.'" ; connexion_departement vaut "'.$connexion_departement.'" ; connexion_nom vaut "'.$connexion_nom.'") !<br />Un administrateur doit sélectionner l\'ENT concerné depuis son menu [Paramétrage&nbsp;établissement] [Mode&nbsp;d\'identification].' /*contenu*/ );
 }
 $tab_info = $tab_connexion_info[$connexion_mode][$connexion_ref];
 if($connexion_nom!='perso')
 {
   if( (strpos($cas_serveur_host,$tab_info['serveur_host_domain'])===FALSE) || ( ($tab_info['serveur_port']!=$cas_serveur_port) && ($tab_info['serveur_port']!='*') ) || ($tab_info['serveur_root']!=$cas_serveur_root) || ($tab_info['serveur_url_login']!=$cas_serveur_url_login) || ($tab_info['serveur_url_logout']!=$cas_serveur_url_logout) || ($tab_info['serveur_url_validate']!=$cas_serveur_url_validate) )
   {
     exit_error( 'Paramètres CAS anormaux' /*titre*/ , 'Les paramètres CAS enregistrés ne correspondent pas à ceux attendus pour la référence "'.$connexion_ref.'" !<br />Un administrateur doit revalider la sélection depuis son menu [Paramétrage&nbsp;établissement] [Mode&nbsp;d\'identification].' /*contenu*/ );
   }
 }
 if(!is_file(CHEMIN_FICHIER_WS_SESAMATH_ENT))
 {
   exit_error( 'Fichier manquant' /*titre*/ , 'Le fichier &laquo;&nbsp;<b>'.FileSystem::fin_chemin(CHEMIN_FICHIER_WS_SESAMATH_ENT).'</b>&nbsp;&raquo; (uniquement présent sur le serveur Sésamath) n\'a pas été détecté !' /*contenu*/ );
 }
 // Normalement les hébergements académiques ne sont pas concernés
 require(CHEMIN_FICHIER_WS_SESAMATH_ENT); // Charge les tableaux   $tab_connecteurs_hebergement & $tab_connecteurs_convention
 if( isset($tab_connecteurs_hebergement[$connexion_ref]) )
 {
   exit_error( 'Mode d\'authentification anormal' /*titre*/ , 'Le mode d\'authentification sélectionné ('.$connexion_nom.') doit être utilisé sur l\'hébergement académique dédié (département '.$connexion_departement.') !' /*contenu*/ );
 }
 // Pas besoin de vérification si convention signée à un plus haut niveau
 if( isset($tab_connecteurs_convention[$connexion_ref]) && $tab_ent_convention_infos[$tab_connecteurs_convention[$connexion_ref]]['actif'] )
 {
   // Cas d'une convention signée par un partenaire ENT => Mettre en session l'affichage de sa communication en page d'accueil.
   $partenaire_id = DB_WEBMESTRE_PUBLIC::DB_recuperer_id_partenaire_for_connecteur($connexion_ref);
   $fichier_chemin = 'info_'.$partenaire_id.'.php';
   if( $partenaire_id && is_file(CHEMIN_DOSSIER_PARTENARIAT.$fichier_chemin) )
   {
Exemplo n.º 3
0
/**
 * Charger les parametres mysql de connexion d'un établissement qui n'auraient pas été chargé par le fichier index ou ajax.
 * 
 * Dans le cas d'une installation de type multi-structures, on peut avoir besoin d'effectuer une requête sur une base d'établissement sans y être connecté :
 * => pour savoir si le mode de connexion est SSO ou pas (./pages/public_*.php)
 * => pour l'identification (méthode SessionUser::tester_authentification_utilisateur())
 * => pour le webmestre (création d'un admin, info sur les admins, initialisation du mdp...)
 * Dans le cas d'une installation de type multi-structures, on peut avoir besoin d'effectuer une requête sur la base du webmestre :
 * => pour avoir des infos sur le contact référent, ou l'état d'une convention ENT
 * 
 * @param int   $BASE   0 pour celle du webmestre
 * @param bool  $exit   TRUE par défaut (arrêt si erreur)
 * @return bool | exit
 */
function charger_parametres_mysql_supplementaires( $BASE , $exit=TRUE )
{
  $fichier_mysql_config_supplementaire = ($BASE) ? CHEMIN_DOSSIER_MYSQL.'serveur_sacoche_structure_'.$BASE.'.php' : CHEMIN_DOSSIER_MYSQL.'serveur_sacoche_webmestre.php' ;
  $fichier_class_config_supplementaire = ($BASE) ? CHEMIN_DOSSIER_INCLUDE.'class.DB.config.sacoche_structure.php' : CHEMIN_DOSSIER_INCLUDE.'class.DB.config.sacoche_webmestre.php' ;
  if(is_file($fichier_mysql_config_supplementaire))
  {
    global $_CONST; // Car si on charge les paramètres dans une fonction, ensuite ils ne sont pas trouvés par la classe de connexion.
    require($fichier_mysql_config_supplementaire);
    require($fichier_class_config_supplementaire);
    return TRUE;
  }
  else
  {
    if($exit)
    {
      exit_error( 'Paramètres BDD manquants' /*titre*/ , 'Les paramètres de connexion à la base de données n\'ont pas été trouvés.<br />Le fichier "'.FileSystem::fin_chemin($fichier_mysql_config_supplementaire).'" (base n°'.$BASE.') est manquant !' /*contenu*/ );
    }
    else
    {
      return FALSE;
    }
  }
}
Exemplo n.º 4
0
if (is_file(CHEMIN_FICHIER_CONFIG_INSTALL)) {
    // Choix des paramètres de connexion à la base de données adaptée...
    // ...multi-structures ; base sacoche_structure_*** (si connecté sur un établissement)
    if (HEBERGEUR_INSTALLATION == 'multi-structures' && $_SESSION['BASE'] > 0) {
        $fichier_mysql_config = 'serveur_sacoche_structure_' . $_SESSION['BASE'];
        $fichier_class_config = 'class.DB.config.sacoche_structure';
    } elseif (HEBERGEUR_INSTALLATION == 'multi-structures') {
        $fichier_mysql_config = 'serveur_sacoche_webmestre';
        $fichier_class_config = 'class.DB.config.sacoche_webmestre';
    } elseif (HEBERGEUR_INSTALLATION == 'mono-structure') {
        $fichier_mysql_config = 'serveur_sacoche_structure';
        $fichier_class_config = 'class.DB.config.sacoche_structure';
    } else {
        exit_error('Configuration anormale', 'Une anomalie dans les données d\'hébergement empêche l\'application de se poursuivre.<br />HEBERGEUR_INSTALLATION vaut ' . HEBERGEUR_INSTALLATION);
    }
    // Chargement du fichier de connexion à la BDD
    define('CHEMIN_FICHIER_CONFIG_MYSQL', CHEMIN_DOSSIER_MYSQL . $fichier_mysql_config . '.php');
    if (is_file(CHEMIN_FICHIER_CONFIG_MYSQL)) {
        require CHEMIN_FICHIER_CONFIG_MYSQL;
        require CHEMIN_DOSSIER_INCLUDE . $fichier_class_config . '.php';
    } elseif ($PAGE != 'public_installation') {
        exit_error('Paramètres BDD manquants', 'Les paramètres de connexion à la base de données n\'ont pas été trouvés.<br />C\'est probablement votre première installation de SACoche, ou bien le fichier "' . FileSystem::fin_chemin(CHEMIN_FICHIER_CONFIG_MYSQL) . '" a été supprimé.<br />Cliquer sur le lien ci-dessous.', 'install');
    }
}
// Chargement de la page concernée
$filename_php = CHEMIN_DOSSIER_PAGES . $PAGE . '.ajax.php';
if (is_file($filename_php)) {
    require $filename_php;
} else {
    echo 'Page "' . $filename_php . '" manquante.';
}
Exemplo n.º 5
0
        // User connecté -> Redirection vers l'application, avec une clef (ticket) pour attester du login et permettre de récupérer ses infos
        $clef = FileSystem::fabriquer_fichier_user_infos_for_appli_externe();
        unset($_SESSION['MEMO_GET']);
        $separateur = strpos($url_redirection, '?') === FALSE ? '?' : '&';
        exit_redirection($url_redirection . $separateur . 'clef=' . $clef);
    }
}
// Page CNIL si message d'information CNIL non validé.
if (isset($_SESSION['STOP_CNIL'])) {
    Session::$tab_message_erreur[] = 'Avant d\'utiliser <em>SACoche</em>, vous devez valider le formulaire ci-dessous.';
    $PAGE = 'compte_cnil';
}
// Fichier de données de la page concernée
$filename_php = CHEMIN_DOSSIER_PAGES . $PAGE . '.php';
if (!is_file($filename_php)) {
    Session::$tab_message_erreur[] = 'Fichier ' . FileSystem::fin_chemin($filename_php) . ' manquant ; redirection vers une page d\'accueil.';
    $PAGE = $_SESSION['USER_PROFIL_TYPE'] == 'public' ? 'public_accueil' : (isset($_SESSION['STOP_CNIL']) ? 'compte_cnil' : 'compte_accueil');
    $filename_php = CHEMIN_DOSSIER_PAGES . $PAGE . '.php';
}
// Contenu à afficher récupéré dans une variable
ob_start();
require $filename_php;
$CONTENU_PAGE = ob_get_contents();
ob_end_clean();
// Jeton CSRF ; ne peut pas être généré avant car $PAGE peut être changé par le code inclus ci-dessus.
Session::generer_jeton_anti_CSRF($PAGE);
// Titre du navigateur
$browser_title = $TITRE ? $TITRE : 'Évaluer par compétences et valider le socle commun';
Layout::add('browser_title', $browser_title);
// Css personnalisé
if (!empty($_SESSION['CSS'])) {
    echo '</tbody>' . NL;
    echo '</table>' . NL;
    exit;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupérer l'identifiant ENT de Laclasse.com (COPY_id_laclasse_TO_id_ent)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'COPY_id_laclasse_TO_id_ent') {
    if (IS_HEBERGEMENT_SESAMATH) {
        exit('Erreur : cette fonctionnalité est sans objet sur le serveur Sésamath !');
    }
    if (substr($_SESSION['WEBMESTRE_UAI'], 0, 3) != '069') {
        exit('Erreur : cette fonctionnalité est réservée aux établissements du département du Rhône (et votre numéro UAI n\'y correspond pas) !');
    }
    if (!is_file(CHEMIN_FICHIER_WS_LACLASSE)) {
        exit('Erreur : le fichier "' . FileSystem::fin_chemin(CHEMIN_FICHIER_WS_LACLASSE) . '" n\'a pas été trouvé !');
    }
    require CHEMIN_FICHIER_WS_LACLASSE;
    // Charge la fonction "recuperer_infos_Laclasse()"
    // Appelle l'annuaire ENT Laclasse.com et retourne un tableau [ ['profil'][i] , ['id_ent'][i]  , ['nom'][i] , ['prenom'][i] , ['id_sconet'][i] ]
    $tab_users_ENT = recuperer_infos_Laclasse('0693331W');
    // $tab_users_ENT = recuperer_infos_Laclasse($_SESSION['WEBMESTRE_UAI']);  // ****************************************************************************
    // On récupère le contenu de la base pour comparer
    $tab_users_base = array();
    $tab_users_base['id'] = array();
    $tab_users_base['ordre'] = array();
    $tab_users_base['profil'] = array();
    $tab_users_base['id_ent'] = array();
    $tab_users_base['nom'] = array();
    $tab_users_base['prenom'] = array();
    $tab_users_base['id_sconet'] = array();
  <fieldset id="fieldset_import_id_laclasse" class="hide">
    <hr />
    <p><span class="manuel"><a class="pop_up" href="<?php echo SERVEUR_DOCUMENTAIRE ?>?fichier=support_administrateur__gestion_mode_identification__laclasse">DOC : Intégration de SACoche dans Laclasse.com</a></span></p>
    <?php
    if(IS_HEBERGEMENT_SESAMATH)
    {
      echo'<div class="danger">Cette fonctionnalité, réservée à l\'installation départementale Laclasse.com, est sans objet sur le serveur Sésamath !</div>'.NL;
    }
    else if(substr($_SESSION['WEBMESTRE_UAI'],0,3)!='069')
    {
      echo'<div class="danger">Cette fonctionnalité est réservée aux établissements du département du Rhône (et votre numéro UAI n\'y correspond pas) !</div>'.NL;
    }
    else if(!is_file(CHEMIN_FICHIER_WS_LACLASSE))
    {
      echo'<div class="danger">Le fichier &laquo;&nbsp;<b>'.FileSystem::fin_chemin(CHEMIN_FICHIER_WS_LACLASSE).'</b>&nbsp;&raquo; (uniquement présent sur l\'installation départementale Laclasse.com) n\'a pas été détecté !</div>'.NL;
    }
    else
    {
      echo'<button name="dupliquer" id="COPY_id_laclasse_TO_id_ent" type="button" class="mdp_groupe">Récupérer l\'identifiant ENT de Laclasse.com</button> pour tous les utilisateurs.'.NL;
    }
    ?>
  </fieldset>

  <fieldset id="fieldset_import_id_ent_normal" class="hide">
    <hr />
    <div class="astuce">Vous devez commencer par sélectionner votre ENT depuis la page "<a href="./index.php?page=administrateur_etabl_connexion">Mode d'identification / Connecteur ENT</a>".</div>
  </fieldset>

  <fieldset id="fieldset_import_id_ent_cas" class="hide">
    <hr />
Exemplo n.º 8
0
 * 
 */

// Fichier appelé pour l'affichage d'une archive PDF d'un bilan officiel.
// Passage en GET d'un paramètre pour savoir quelle page charger.

// Constantes / Configuration serveur / Autoload classes / Fonction de sortie
require('./_inc/_loader.php');

// Fichier d'informations sur l'hébergement (requis avant la gestion de la session).
require(CHEMIN_FICHIER_CONFIG_INSTALL);

// Ouverture de la session et gestion des droits d'accès
if(!Session::verif_droit_acces(SACoche))
{
  exit_error( 'Droits manquants' /*titre*/ , 'Droits de la page "'.SACoche.'" manquants.<br />Les droits de cette page n\'ont pas été attribués dans le fichier "'.FileSystem::fin_chemin(CHEMIN_DOSSIER_INCLUDE.'tableau_droits.php').'".' /*contenu*/ , '' /*lien*/ );
}
Session::execute();

// Autres fonctions à charger
require(CHEMIN_DOSSIER_INCLUDE.'fonction_divers.php');

// Paramètre transmis
$FICHIER = (isset($_GET['fichier'])) ? $_GET['fichier'] : '';

// Extraction des infos
list( $eleve_id , $bilan_type , $periode_id ) = explode( '_' , $FICHIER) + Array( NULL , NULL , NULL );

$bilan_type = Clean::texte($bilan_type);
$periode_id = Clean::entier($periode_id);
$eleve_id   = Clean::entier($eleve_id);
Exemplo n.º 9
0
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Étape 6 - Installation des tables de la base de données
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( $step==6 )
{
  // A ce niveau, le fichier d'informations sur l'hébergement doit exister.
  if(!is_file(CHEMIN_FICHIER_CONFIG_INSTALL))
  {
    exit('Erreur : problème avec le fichier : '.FileSystem::fin_chemin(CHEMIN_FICHIER_CONFIG_INSTALL).' !');
  }
  // A ce niveau, le fichier de connexion à la base de données doit exister.
  if(!is_file(CHEMIN_FICHIER_CONFIG_MYSQL))
  {
    exit('Erreur : problème avec le fichier : '.FileSystem::fin_chemin(CHEMIN_FICHIER_CONFIG_MYSQL).' !');
  }
  // Créer les dossiers de fichiers temporaires par établissement
  if(HEBERGEUR_INSTALLATION=='mono-structure')
  {
    foreach(FileSystem::$tab_dossier_tmp_structure as $dossier)
    {
      FileSystem::creer_dossier($dossier.'0' , $affichage );
      FileSystem::ecrire_fichier_index($dossier.'0');
    }
  }
  // On cherche d'éventuelles tables existantes de SACoche.
  $DB_TAB = (HEBERGEUR_INSTALLATION=='mono-structure') ? DB_STRUCTURE_COMMUN::DB_recuperer_tables_informations() : DB_WEBMESTRE_PUBLIC::DB_recuperer_tables_informations() ;
  $nb_tables_presentes = !empty($DB_TAB) ? count($DB_TAB) : 0 ;
  if($nb_tables_presentes)
  {
     // Ne pas dupliquer en paramétrage CAS-perso un paramétrage CAS-ENT existant (utiliser la connexion CAS officielle)
     if ($f_connexion_nom == 'perso') {
         foreach ($tab_serveur_cas as $cas_nom => $tab_cas_param) {
             if ($cas_nom) {
                 $is_param_defaut_identiques = strpos($cas_serveur_host, $tab_cas_param['serveur_host_domain']) !== FALSE && $cas_serveur_root == $tab_cas_param['serveur_root'] ? TRUE : FALSE;
                 // Pas de test sur le sous-domaine ni le port car ils peuvent varier
                 $is_param_force_identiques = $cas_serveur_url_login != '' && ($cas_serveur_url_login == $tab_cas_param['serveur_url_login'] || strpos($cas_serveur_url_login, $tab_cas_param['serveur_host_domain'] . ':' . $tab_cas_param['serveur_port'] . '/' . $tab_cas_param['serveur_root']) !== FALSE) ? TRUE : FALSE;
                 if ($is_param_defaut_identiques || $is_param_force_identiques) {
                     exit_json(FALSE, 'Paramètres d\'un ENT référencé : sélectionnez-le !');
                 }
             }
         }
     } else {
         if (IS_HEBERGEMENT_SESAMATH) {
             if (!is_file(CHEMIN_FICHIER_WS_SESAMATH_ENT)) {
                 exit_json(FALSE, 'Le fichier &laquo;&nbsp;<b>' . FileSystem::fin_chemin(CHEMIN_FICHIER_WS_SESAMATH_ENT) . '</b>&nbsp;&raquo; (uniquement présent sur le serveur Sésamath) n\'a pas été détecté !');
             }
             require CHEMIN_FICHIER_WS_SESAMATH_ENT;
             // Charge les tableaux   $tab_connecteurs_hebergement & $tab_connecteurs_convention
             if (isset($tab_connecteurs_hebergement[$f_connexion_ref])) {
                 exit_json(FALSE, 'Paramètres d\'un serveur CAS à utiliser sur l\'hébergement académique dédié !');
             }
         }
     }
 }
 // C'est ok
 DB_STRUCTURE_COMMUN::DB_modifier_parametres(array('connexion_mode' => $f_connexion_mode, 'connexion_nom' => $f_connexion_nom, 'connexion_departement' => $f_connexion_departement, 'cas_serveur_host' => $cas_serveur_host, 'cas_serveur_port' => $cas_serveur_port, 'cas_serveur_root' => $cas_serveur_root, 'cas_serveur_url_login' => $cas_serveur_url_login, 'cas_serveur_url_logout' => $cas_serveur_url_logout, 'cas_serveur_url_validate' => $cas_serveur_url_validate));
 // ne pas oublier de mettre aussi à jour la session (normalement faudrait pas car connecté avec l'ancien mode, mais sinon pb d'initalisation du formulaire)
 $_SESSION['CONNEXION_MODE'] = $f_connexion_mode;
 $_SESSION['CONNEXION_NOM'] = $f_connexion_nom;
 $_SESSION['CONNEXION_DEPARTEMENT'] = $f_connexion_departement;
Exemplo n.º 11
0
 /**
  * Ecrire du contenu dans un fichier, exit() en cas d'erreur
  * 
  * @param string   $fichier_chemin
  * @param string   $fichier_contenu
  * @param int      facultatif ; si constante FILE_APPEND envoyée, alors ajoute en fin de fichier au lieu d'écraser le contenu
  * @return TRUE    par compatibilité avec ecrire_fichier_si_possible()
  */
 public static function ecrire_fichier($fichier_chemin,$fichier_contenu,$file_append=0)
 {
   @umask(FileSystem::systeme_umask());
   $test_ecriture = @file_put_contents($fichier_chemin,$fichier_contenu,$file_append);
   if($test_ecriture===FALSE)
   {
     exit('Erreur : problème lors de l\'écriture du fichier '.FileSystem::fin_chemin($fichier_chemin).' !');
   }
   return TRUE;
 }