예제 #1
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);
    }
  }
}
예제 #2
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);
         }
     }
 }
예제 #3
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>
예제 #4
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;
   }
예제 #5
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>';
}