Exemplo n.º 1
0
 /**
  * Supprimer une structure (mode multi-structures)
  *
  * @param int    $BASE 
  * @return void
  */
 public static function supprimer_multi_structure($BASE)
 {
     // Paramètres de connexion à la base de données
     $BD_name = 'sac_base_' . $BASE;
     $BD_user = '******' . $BASE;
     // Limité à 16 caractères
     // Supprimer la base de données d'une structure, et son utilisateur MySQL une fois défait de ses droits.
     DB_WEBMESTRE_WEBMESTRE::DB_supprimer_base_structure_et_user_mysql($BD_name, $BD_user);
     // Supprimer le fichier de connexion
     FileSystem::supprimer_fichier(CHEMIN_DOSSIER_MYSQL . 'serveur_sacoche_structure_' . $BASE . '.php');
     // Retirer l'enregistrement d'une structure dans la base du webmestre
     DB_WEBMESTRE_WEBMESTRE::DB_supprimer_structure($BASE);
     // Supprimer les dossiers de fichiers temporaires par établissement
     foreach (FileSystem::$tab_dossier_tmp_structure as $dossier) {
         FileSystem::supprimer_dossier($dossier . $BASE);
     }
     // Supprimer les éventuels fichiers de blocage
     LockAcces::supprimer_fichiers_blocage($BASE);
     // Log de l'action
     SACocheLog::ajouter('Suppression de la structure n°' . $BASE . '.');
 }
 * de la “GNU Affero General Public License” telle que publiée par la Free Software Foundation :
 * soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.
 * 
 * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE :
 * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER.
 * Consultez la Licence Publique Générale GNU Affero pour plus de détails.
 * 
 * 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 !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
    exit('Action désactivée pour la démo...');
}
$action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : '';
$motif = isset($_POST['f_motif']) ? Clean::texte($_POST['f_motif']) : '';
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Bloquer ou débloquer l'application
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'debloquer') {
    LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'], $_SESSION['BASE']);
    exit('<label class="valide">Application accessible.</label>');
} elseif ($action == 'bloquer') {
    LockAcces::bloquer_application($_SESSION['USER_PROFIL_TYPE'], $_SESSION['BASE'], $motif);
    exit('<label class="erreur">Application fermée : ' . html($motif) . '</label>');
} else {
    echo 'Erreur avec les données transmises !';
}
if ($action == 'exporter' && $num && $max && $num < $max) {
    // Récupérer la ligne de données
    $fichier_texte = file_get_contents(CHEMIN_DOSSIER_EXPORT . $fichier_csv_nom);
    $tab_ligne = explode("\r\n", $fichier_texte);
    // Récupérer une série d'infos, sachant que seuls $export_id et $fichier_nom sont utiles
    list($export_id, $import_id, $geo_id, $localisation, $denomination, $uai, $contact_nom, $contact_prenom, $contact_courriel, $date, $fichier_nom) = explode($separateur, $tab_ligne[$num]);
    // Charger les paramètres de connexion à cette base afin de pouvoir y effectuer des requêtes
    charger_parametres_mysql_supplementaires($export_id);
    // Créer ou vider le dossier temporaire des sql
    FileSystem::creer_ou_vider_dossier($dossier_temp_sql);
    // Bloquer l'application
    LockAcces::bloquer_application('automate', $export_id, 'Sauvegarde de la base en cours.');
    // Remplir le dossier temporaire avec les fichiers de svg des tables
    sauvegarder_tables_base_etablissement($dossier_temp_sql, 0);
    // Débloquer l'application
    LockAcces::debloquer_application('automate', $export_id);
    // Zipper les fichiers de svg
    FileSystem::zipper_fichiers($dossier_temp_sql, $dossier_temp_zip, $fichier_nom);
    // Appel suivant
    exit(']¤[' . 'ok');
} elseif ($action == 'exporter' && $num && $max && $num == $max) {
    // Supprimer le dossier temporaire des sql
    FileSystem::supprimer_dossier($dossier_temp_sql);
    // Zipper les zip de svg
    FileSystem::zipper_fichiers($dossier_temp_zip, CHEMIN_DOSSIER_DUMP, $fichier_zip_nom);
    // Supprimer le dossier temporaire des zip
    FileSystem::supprimer_dossier($dossier_temp_zip);
    // Game over
    unset($_SESSION['datetime'], $_SESSION['alea']);
    exit(']¤[' . 'ok' . ']¤[' . URL_DIR_EXPORT . $fichier_csv_nom . ']¤[' . URL_DIR_DUMP . $fichier_zip_nom);
}
Exemplo n.º 4
0
        ajouter_log_PHP( 'Mise à jour des fichiers' /*log_objet*/ , 'Application accessible.' /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ );
        LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'],'0');
        exit(']¤['.'pb'.']¤['."Erreur lors de l'écriture du fichier ".$fichier." !");
      }
      $tbody .= '<tr><td class="v">Fichier ajouté</td><td>'.$fichier.'</td></tr>';
    }
    elseif(!isset($tab['apres'])) // (forcément)
    {
      // Fichier à supprimer
      FileSystem::supprimer_fichier($dossier_install.$fichier , TRUE /*verif_exist*/ );
      $tbody .= '<tr><td class="r">Fichier supprimé</td><td>'.$fichier.'</td></tr>';
    }
  }
  // Débloquer l'application
  ajouter_log_PHP( 'Mise à jour des fichiers' /*log_objet*/ , 'Application accessible.' /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ );
  LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'],'0');
  // Enregistrement du rapport
  $_SESSION['tmp']['rapport_filename'] = 'rapport_maj_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.html';
  FileSystem::fabriquer_fichier_rapport( $_SESSION['tmp']['rapport_filename'] , $thead , $tbody );
  exit(']¤['.'ok'.']¤['.'Rapport des modifications apportées et nettoyage&hellip;');
}

//
// 5. Nettoyage...
//
if($action=='maj_etape5')
{
  FileSystem::supprimer_dossier($dossier_dezip);
  $fichier_chemin = URL_DIR_EXPORT.$_SESSION['tmp']['rapport_filename'];
  unset($_SESSION['tmp']);
  exit(']¤['.'ok'.']¤['.VERSION_PROG.'_#_'.$fichier_chemin);
Exemplo n.º 5
0
/**
 * Mettre à jour automatiquement la base si besoin ; à effectuer avant toute récupération des données sinon ça peut poser pb...
 * 
 * @param int   $BASE
 * @return void
 */
function maj_base_structure_si_besoin($BASE)
{
  $version_base_structure = DB_STRUCTURE_PUBLIC::DB_version_base();
  if($version_base_structure != VERSION_BASE_STRUCTURE)
  {
    // On ne met pas à jour la base tant que le webmestre bloque l'accès à l'application, car sinon cela pourrait se produire avant le transfert de tous les fichiers.
    if(LockAcces::tester_blocage('webmestre',0)===NULL)
    {
      // Bloquer l'application
      LockAcces::bloquer_application('automate',$BASE,'Mise à jour de la base en cours.');
      // Lancer une mise à jour de la base
      DB_STRUCTURE_MAJ_BASE::DB_maj_base($version_base_structure);
      // Log de l'action
      SACocheLog::ajouter('Mise à jour automatique de la base '.SACOCHE_STRUCTURE_BD_NAME.'.');
      // Débloquer l'application
      LockAcces::debloquer_application('automate',$BASE);
    }
  }
}
Exemplo n.º 6
0
    exit('ok');
}
// Arrêt s'il fallait seulement fermer la session
if ($PAGE == 'fermer_session') {
    Session::close();
    exit('ok');
}
// Traductions
if ($_SESSION['USER_PROFIL_TYPE'] != 'public') {
    Lang::setlocale(LC_MESSAGES, Lang::get_locale_used());
    Lang::bindtextdomain(LOCALE_DOMAINE, LOCALE_DIR);
    Lang::bind_textdomain_codeset(LOCALE_DOMAINE, LOCALE_CHARSET);
    Lang::textdomain(LOCALE_DOMAINE);
}
// Blocage éventuel par le webmestre ou un administrateur ou l'automate (on ne peut pas le tester avant car il faut avoir récupéré les données de session)
LockAcces::stopper_si_blocage($_SESSION['BASE'], FALSE);
// Autres fonctions à charger
require CHEMIN_DOSSIER_INCLUDE . 'fonction_divers.php';
// Logs d'infos au cas où un trop grand nombre de variables seraient postées (par défaut max_input_vars est configuré dans PHP à 1000, et en cas de dépassement les logs indiquent juste "in Unknown on line 0").
if (count($_POST) > 999) {
    ajouter_log_PHP('Trop de variables postées', 'Page ' . $PAGE, __FILE__, __LINE__, FALSE);
}
// Jeton CSRF
Session::verifier_jeton_anti_CSRF($PAGE);
// MAJ fichier de config hébergement si besoin
if (is_file(CHEMIN_FICHIER_CONFIG_INSTALL)) {
    require CHEMIN_DOSSIER_INCLUDE . 'maj_fichier_constantes_hebergement.php';
}
// Interface de connexion à la base, chargement et config (test sur CHEMIN_FICHIER_CONFIG_INSTALL car à éviter si procédure d'installation non terminée).
if (is_file(CHEMIN_FICHIER_CONFIG_INSTALL)) {
    // Choix des paramètres de connexion à la base de données adaptée...
Exemplo n.º 7
0
{
  Session::close();
  exit('ok');
}

// Traductions
if($_SESSION['USER_PROFIL_TYPE']!='public')
{
  Lang::setlocale( LC_MESSAGES, Lang::get_locale_used() );
  Lang::bindtextdomain( LOCALE_DOMAINE, LOCALE_DIR );
  Lang::bind_textdomain_codeset( LOCALE_DOMAINE, LOCALE_CHARSET );
  Lang::textdomain( LOCALE_DOMAINE );
}

// Blocage éventuel par le webmestre ou un administrateur ou l'automate (on ne peut pas le tester avant car il faut avoir récupéré les données de session)
LockAcces::stopper_si_blocage( $_SESSION['BASE'] , FALSE /*demande_connexion_profil*/ );

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

// Logs d'infos au cas où un trop grand nombre de variables seraient postées (par défaut max_input_vars est configuré dans PHP à 1000, et en cas de dépassement les logs indiquent juste "in Unknown on line 0").
if(count($_POST)>999)
{
  ajouter_log_PHP( 'Trop de variables postées' /*log_objet*/ , 'Page '.$PAGE /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ );
}

// Jeton CSRF
Session::verifier_jeton_anti_CSRF($PAGE);

// MAJ fichier de config hébergement si besoin
if(is_file(CHEMIN_FICHIER_CONFIG_INSTALL))
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Suppression des notes et des validations
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if($action=='supprimer')
{
  // Bloquer l'application
  LockAcces::bloquer_application('automate',$_SESSION['BASE'],'Suppression des notes et des validations en cours.');
  // Supprimer toutes les saisies aux évaluations
  DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_saisies();
  // Supprimer toutes les validations du socle
  DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_validations();
  // Débloquer l'application
  LockAcces::debloquer_application('automate',$_SESSION['BASE']);
  // Notifications (rendues visibles ultérieurement)
  $notification_contenu = date('d-m-Y H:i:s').' '.$_SESSION['USER_PRENOM'].' '.$_SESSION['USER_NOM'].' a supprimé toutes les notes et les validations enregistrées.'."\r\n";
  DB_STRUCTURE_NOTIFICATION::enregistrer_action_admin( $notification_contenu , $_SESSION['USER_ID'] );
  // Afficher le retour
  echo'<li><label class="valide">Notes saisies aux évaluations supprimées.</label></li>'.NL;
  echo'<li><label class="valide">Validations des items et des compétences du socle supprimées.</label></li>'.NL;
  $top_arrivee = microtime(TRUE);
  $duree = number_format($top_arrivee - $top_depart,2,',','');
  echo'<li><label class="valide">Suppression des notes et des validations réalisée en '.$duree.'s.</label></li>'.NL;
  exit();
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Effacement des étiquettes nom & prénom
// ////////////////////////////////////////////////////////////////////////////////////////////////////
Exemplo n.º 9
0
 /**
  * Test si l'accès est bloqué sur demande du webmestre ou d'un administrateur (maintenance, sauvegarde/restauration, ...).
  * Si tel est le cas, alors exit().
  * 
  * Nécessite que la session soit ouverte.
  * Appelé depuis les pages index.php + ajax.php + lors d'une demande d'identification d'un utilisateur (sauf webmestre)
  * 
  * En cas de blocage demandé par le webmestre, on ne laisse l'accès que :
  * - pour le webmestre déjà identifié
  * - pour la partie publique, si pas une demande d'identification, sauf demande webmestre
  * 
  * En cas de blocage demandé par un administrateur ou par l'automate (sauvegarde/restauration) pour un établissement donné, on ne laisse l'accès que :
  * - pour le webmestre déjà identifié
  * - pour un administrateur déjà identifié
  * - pour la partie publique, si pas une demande d'identification, sauf demande webmestre ou administrateur
  * 
  * @param string $BASE                             car $_SESSION['BASE'] non encore renseigné si demande d'identification
  * @param string $demande_connexion_profil_sigle   FALSE si appel depuis index.php ou ajax.php, le sigle du profil si demande d'identification
  * @return void | exit !
  */
 public static function stopper_si_blocage($BASE, $demande_connexion_profil_sigle)
 {
     // Blocage demandé par le webmestre pour tous les établissements (multi-structures) ou pour l'établissement (mono-structure).
     $blocage_msg = LockAcces::tester_blocage('webmestre', 0);
     if ($blocage_msg !== NULL && $_SESSION['USER_PROFIL_SIGLE'] != 'WBM' && ($_SESSION['USER_PROFIL_SIGLE'] != 'OUT' || $demande_connexion_profil_sigle != FALSE)) {
         exit_error('Blocage par le webmestre', html('Blocage par le webmestre - ' . $blocage_msg));
     }
     // Blocage demandé par le webmestre pour un établissement donné (multi-structures).
     $blocage_msg = LockAcces::tester_blocage('webmestre', $BASE);
     if ($blocage_msg !== NULL && $_SESSION['USER_PROFIL_SIGLE'] != 'WBM' && ($_SESSION['USER_PROFIL_SIGLE'] != 'OUT' || $demande_connexion_profil_sigle != FALSE)) {
         exit_error('Blocage par le webmestre', html('Blocage par le webmestre - ' . $blocage_msg));
     }
     // Blocage demandé par un administrateur pour son établissement.
     $blocage_msg = LockAcces::tester_blocage('administrateur', $BASE);
     if ($blocage_msg !== NULL && !in_array($_SESSION['USER_PROFIL_SIGLE'], array('WBM', 'ADM')) && ($_SESSION['USER_PROFIL_SIGLE'] != 'OUT' || !in_array($demande_connexion_profil_sigle, array(FALSE, 'WBM', 'ADM')))) {
         exit_error('Blocage par un administrateur', html('Blocage par un administrateur - ' . $blocage_msg));
     }
     // Blocage demandé par l'automate pour un établissement donné.
     $blocage_msg = LockAcces::tester_blocage('automate', $BASE);
     if ($blocage_msg !== NULL && !in_array($_SESSION['USER_PROFIL_SIGLE'], array('WBM', 'ADM')) && ($_SESSION['USER_PROFIL_SIGLE'] != 'OUT' || !in_array($demande_connexion_profil_sigle, array(FALSE, 'WBM', 'ADM')))) {
         // Au cas où une procédure de sauvegarde / restauration / nettoyage / tranfert échouerait, un fichier de blocage automatique pourrait être créé et ne pas être effacé.
         // Pour cette raison on teste une durée de vie anormalement longue d'une tel fichier de blocage (puisqu'il ne devrait être que temporaire).
         if ($_SERVER['REQUEST_TIME'] - filemtime(LockAcces::chemin_fichier_blocage('automate', $BASE)) < 5 * 60) {
             exit_error('Blocage automatique', html('Blocage automatique - ' . $blocage_msg));
         } else {
             // Annuler un blocage à SACoche par l'automate anormalement long.
             LockAcces::debloquer_application('automate', $BASE);
         }
     }
 }
Exemplo n.º 10
0
     <th>Contact</th>
     <th>Date</th>
     <th class="nu"><q class="ajouter" title="Ajouter un établissement."></q></th>
   </tr>
 </thead>
 <tbody>
   <?php
   // Lister les structures
   $DB_TAB = DB_WEBMESTRE_WEBMESTRE::DB_lister_structures( FALSE /*listing_base_id*/ , $geo_id );
   foreach($DB_TAB as $DB_ROW)
   {
     // Formater la date
     $date_mysql  = $DB_ROW['structure_inscription_date'];
     $date_affich = ($date_mysql!=SORTIE_DEFAUT_MYSQL) ? convert_date_mysql_to_french($date_mysql) : '-' ;
     // Afficher une ligne du tableau
     $img = (LockAcces::tester_blocage('webmestre',$DB_ROW['sacoche_base'])===NULL) ? '<img class="bloquer" src="./_img/etat/acces_oui.png" title="Bloquer cet établissement." />' : '<img class="debloquer" src="./_img/etat/acces_non.png" title="Débloquer cet établissement." />' ;
     echo'<tr id="id_'.$DB_ROW['sacoche_base'].'">';
     echo  '<td class="nu"><a href="#id_0">'.$img.'</a></td>';
     echo  '<td class="nu"><input type="checkbox" name="f_ids" value="'.$DB_ROW['sacoche_base'].'" /></td>';
     echo  '<td class="label">'.$DB_ROW['sacoche_base'].'</td>';
     echo  '<td class="label"><i>'.sprintf($geo_ordre_format,$DB_ROW['geo_ordre']).'</i>'.html($DB_ROW['geo_nom']).'<br />'.html($DB_ROW['structure_localisation']).'</td>';
     echo  '<td class="label">'.html($DB_ROW['structure_denomination']).'<br />'.html($DB_ROW['structure_uai']).'</td>';
     echo  '<td class="label"><span>'.html($DB_ROW['structure_contact_nom']).'</span> <span>'.html($DB_ROW['structure_contact_prenom']).'</span><div>'.html($DB_ROW['structure_contact_courriel']).'</div></td>';
     echo  '<td class="label">'.$date_affich.'</td>';
     echo  '<td class="nu">';
     echo    '<q class="modifier" title="Modifier cet établissement."></q>';
     echo    '<q class="initialiser_mdp" title="Générer un nouveau mdp d\'un admin."></q>';
     echo    '<q class="supprimer" title="Supprimer cet établissement."></q>';
     echo  '</td>';
     echo'</tr>'.NL;
   }
Exemplo n.º 11
0
 * soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.
 * 
 * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE :
 * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER.
 * Consultez la Licence Publique Générale GNU Affero pour plus de détails.
 * 
 * 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::_("Blocage des connexions"));

// Initialisation de l'état de l'accès
$blocage_msg = LockAcces::tester_blocage('administrateur',$_SESSION['BASE']);
if($blocage_msg!==NULL)
{
  $label = '<label class="erreur">Application fermée : '.html($blocage_msg).'</label>';
}
else
{
  $label = '<label class="valide">Application accessible.</label>';
}
?>

<p><span class="manuel"><a class="pop_up" href="<?php echo SERVEUR_DOCUMENTAIRE ?>?fichier=environnement_generalites__verrouillage">DOC : Verrouillage de l'application</a></span></p>

<hr />

<h2>État de l'accès actuel</h2>
Exemplo n.º 12
0
 /**
  * Tester si les données transmises permettent d'authentifier un utilisateur (sauf webmestre & développeur).
  * 
  * En cas de connexion avec les identifiants SACoche, la reconnaissance s'effectue sur le couple login/password.
  * En cas de connexion depuis un service SSO extérieur type CAS, la reconnaissance s'effectue en comparant l'identifiant transmis (via $login) avec l'id ENT de jointure connu de SACoche.
  * En cas de connexion utilisant GEPI, la reconnaissance s'effectue en comparant le login GEPI transmis avec l'id Gepi de jointure connu de SACoche.
  * 
  * @param int       $BASE
  * @param string    $login
  * @param string    $password
  * @param string    $mode_connection 'normal' | 'cas' | 'shibboleth' | 'siecle' | 'vecteur_parent' | 'gepi' | 'ldap' (?)
  * @param string    $parent_nom      facultatif, seulement pour $mode_connection = 'vecteur_parent'
  * @param string    $parent_prenom   facultatif, seulement pour $mode_connection = 'vecteur_parent'
  * @return array(string,array)   ('ok',$DB_ROW) ou (message_d_erreur,tableau_vide)
  */
 public static function tester_authentification_utilisateur($BASE,$login,$password,$mode_connection,$parent_nom='',$parent_prenom='')
 {
   // En cas de multi-structures, il faut charger les paramètres de connexion à la base concernée
   // Sauf pour une connexion à un ENT, car alors il a déjà fallu les charger pour récupérer les paramètres de connexion à l'ENT
   if( ($BASE) && ($mode_connection=='normal') )
   {
     charger_parametres_mysql_supplementaires($BASE);
   }
   // Récupérer les données associées à l'utilisateur.
   $DB_ROW = DB_STRUCTURE_PUBLIC::DB_recuperer_donnees_utilisateur($mode_connection,$login,$parent_nom,$parent_prenom);
   // Si login (ou identifiant SSO) non trouvé...
   if(empty($DB_ROW))
   {
     switch($mode_connection)
     {
       case 'normal'         : $message = 'Nom d\'utilisateur incorrect !'; break;
       case 'cas'            : $message = 'Identification réussie mais identifiant CAS "'       .$login.'" inconnu dans SACoche !<br />Un administrateur doit renseigner que l\'identifiant ENT associé à votre compte SACoche est "' .$login.'"&hellip;<br />Il doit pour cela se connecter à SACoche, menu [Gestion&nbsp;courante], et indiquer pour votre compte dans le champ [Id.&nbsp;ENT] la valeur "' .$login.'".'; break;
       case 'shibboleth'     : $message = 'Identification réussie mais identifiant Shibboleth "'.$login.'" inconnu dans SACoche !<br />Un administrateur doit renseigner que l\'identifiant ENT associé à votre compte SACoche est "' .$login.'"&hellip;<br />Il doit pour cela se connecter à SACoche, menu [Gestion&nbsp;courante], et indiquer pour votre compte dans le champ [Id.&nbsp;ENT] la valeur "' .$login.'".'; break;
       case 'siecle'         : $message = 'Identification réussie mais identifiant Sconet "'    .$login.'" inconnu dans SACoche !<br />Un administrateur doit renseigner que l\'identifiant Sconet associé à votre compte SACoche est "' .$login.'"&hellip;<br />Il doit pour cela se connecter à SACoche, menu [Gestion&nbsp;courante], et indiquer pour votre compte dans le champ [Id.&nbsp;Sconet] la valeur "' .$login.'".'; break;
       case 'vecteur_parent' : $message = 'Identification réussie mais compte parent introuvable dans SACoche !<br />Le compte SACoche d\'un responsable légal dont le nom est "' .$parent_nom.'", le prénom est "' .$parent_prenom.'", et ayant la charge d\'un enfant dont l\'identifiant Sconet est "' .$login.'", n\'a pas été trouvé.'; break;
       case 'gepi'           : $message = 'Identification réussie mais login GEPI "'            .$login.'" inconnu dans SACoche !<br />Un administrateur doit renseigner que l\'identifiant GEPI associé à votre compte SACoche est "'.$login.'"&hellip;<br />Il doit pour cela se connecter à SACoche, menu [Gestion&nbsp;courante], et indiquer pour votre compte dans le champ [Id.&nbsp;Gepi] la valeur "'.$login.'".'; break;
     }
     return array($message,array());
   }
   // Blocage éventuel par le webmestre ou un administrateur ou l'automate
   LockAcces::stopper_si_blocage( $BASE , $DB_ROW['user_profil_sigle'] );
   // Si mdp incorrect...
   if( ($mode_connection=='normal') && ($DB_ROW['user_password']!=crypter_mdp($password)) )
   {
     global $PAGE;
     return array( 'Mot de passe incorrect ! Nouvelle tentative autorisée dans '.$_SESSION['FORCEBRUTE'][$PAGE]['DELAI'].'s.' , array() );
   }
   // Si compte desactivé...
   if($DB_ROW['user_sortie_date']<=TODAY_MYSQL)
   {
     return array( 'Identification réussie mais ce compte est desactivé !' , array() );
   }
   // Mémoriser la date de la (dernière) connexion (pour les autres cas, sera enregistré lors de la confirmation de la prise en compte des infos CNIL).
   if( ($DB_ROW['user_connexion_date']!==NULL) || in_array($DB_ROW['user_profil_type'],array('webmestre','administrateur')) )
   {
     DB_STRUCTURE_PUBLIC::DB_enregistrer_date_connexion($DB_ROW['user_id']);
   }
   // Enregistrement d'un cookie sur le poste client servant à retenir le dernier établissement sélectionné si identification avec succès
   Cookie::definir( COOKIE_STRUCTURE , $BASE , 31536000 /* 60*60*24*365 = 1 an */ );
   // Enregistrement d'un cookie sur le poste client servant à retenir le dernier mode de connexion utilisé si identification avec succès
   Cookie::definir( COOKIE_AUTHMODE , $mode_connection );
   // Si on arrive ici c'est que l'identification s'est bien effectuée !
   return array( 'ok' , $DB_ROW );
 }
Exemplo n.º 13
0
 * soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.
 * 
 * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE :
 * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER.
 * Consultez la Licence Publique Générale GNU Affero pour plus de détails.
 * 
 * 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 = "Maintenance &amp; Mise à jour"; // Pas de traduction car pas de choix de langue pour ce profil.

// Initialisation de l'état de l'accès
$blocage_msg = LockAcces::tester_blocage('webmestre',0);
if($blocage_msg!==NULL)
{
  $label_acces = '<label class="erreur">Application fermée : '.html($blocage_msg).'</label>';
}
else
{
  $label_acces = '<label class="valide">Application accessible.</label>';
}

// Pas de bouton maj automatique si LCS ou serveur Sésamath
if(IS_HEBERGEMENT_SESAMATH)
{
  $disabled = ' disabled';
  $label_maj = '<label id="ajax_maj" class="erreur">La mise à jour de SACoche sur le serveur Sésamath doit s\'effectuer en déployant le SVN.</label>';
}