Outils pour utilisateurs

Outils du site


admin_firewall

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
admin_firewall [09/08/2017 14:47] LesahrWebadmin_firewall [20/06/2021 12:46] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ===== Administration du système : gestion des règles de l'assistance (mode "Firewall™") ===== ===== Administration du système : gestion des règles de l'assistance (mode "Firewall™") =====
  
-Le mode ''Firewall™'' (ou //Mur de feu//) de ''Lesahr<sup>Web</sup>'' permet à lui seul de 'déposer' un élève exactement dans le cursus précis, sans échappatoire possible.+Le mode ''Firewall™'' (ou //Mur de feu//) de ''Lesahr<sup>Web</sup>'' permet de bloquer l'accès d'un élève à un curriculum, sans échappatoire possible.
 Ce mode est exclusivement réservé à l'[[assistant_inscription_curr|Assistant d'inscription : sélection du ou des domaines et cours suivis]] et est débrayé lors de la gestion des curriculums hors assistant. Ce mode est exclusivement réservé à l'[[assistant_inscription_curr|Assistant d'inscription : sélection du ou des domaines et cours suivis]] et est débrayé lors de la gestion des curriculums hors assistant.
  
Ligne 10: Ligne 10:
 ==== Règles de base du Firewall™ ==== ==== Règles de base du Firewall™ ====
  
-Il s'agit ici d'exploiter le langage poussé de ''MySQL'' pour extraire une information de la base de données. La seule opération possible est une sélection d'une population de données. Cette documentation n'ayant pas vocation d'expliquer le langage ''MySQL'', veuillez vous référer à la documentation officielle  disponible [[https://dev.mysql.com/doc/refman/5.7/en/select.html|ici]]. Cependant, dans les exemples ci-après, la base est disponible.+Il s'agit ici d'exploiter le langage poussé de ''MySQL'' pour extraire une information de la base de données. La seule opération possible est une sélection d'une population de données. Cette documentation n'ayant pas vocation d'expliquer le langage ''MySQL'', veuillez vous référer à la documentation officielle  disponible [[https://dev.mysql.com/doc/refman/5.7/en/select.html|ici]]. Cependant, dans les exemples ci-après, les connaissances de base sont suffisantes.
  
 <code mysql>SELECT * FROM table WHERE condition</code> <code mysql>SELECT * FROM table WHERE condition</code>
 Cette commande générique permet de sélectionner, et donc de compter, le nombre d'éléments qui satisfont à la condition. Cette commande générique permet de sélectionner, et donc de compter, le nombre d'éléments qui satisfont à la condition.
 +
 +''Lesahr<sup>Web</sup>'' numérote les règles créees comme suit : **$regle** suivi d'un **numéro** (ex. **$regle18**). ''Lesahr<sup>Web</sup>'' aura besoin de ce nom pour exécuter les **actions de Firewall™** (voir infra).
  
 Pour exécuter cette commande en tenant compte du contexte dans lequel ''Lesahr<sup>Web</sup>'' se trouve, vous disposez des variables génériques suivantes :  Pour exécuter cette commande en tenant compte du contexte dans lequel ''Lesahr<sup>Web</sup>'' se trouve, vous disposez des variables génériques suivantes : 
Ligne 22: Ligne 24:
   * **$degre** : degré concerné (F1, T3,…)   * **$degre** : degré concerné (F1, T3,…)
 Vous disposez également de tous les comparateurs disponibles dans ''MySQL'' Vous disposez également de tous les comparateurs disponibles dans ''MySQL''
-<code mysql><, , = , >, !, %, BETWEEN,…</code>+<code mysql><, <= , =, >=, >, !=LIKE, BETWEEN,…</code> 
 + 
 +Enfin, ''Lesahr<sup>Web</sup>'' vous offre un bouton de **[**<html><font color="red"> TEST </font></html>**]** qui permet de repérer les éventuelles erreurs syntaxiques et, dès correction, de tester le résultat de la règle. 
 + 
 +|  {{::admin_firewall_regle_1.png?400|}}  |
  
 __Exemple 1__ : nous allons vérifier que l'élève en cours de traitement par l'[[assistant_inscription|Assistant]] est âgé de 7 ans. Nous avons besoin de :  __Exemple 1__ : nous allons vérifier que l'élève en cours de traitement par l'[[assistant_inscription|Assistant]] est âgé de 7 ans. Nous avons besoin de : 
   * son matricule : **$matricule**   * son matricule : **$matricule**
   * son année de naissance : **DN_annee** de la table **eleves**   * son année de naissance : **DN_annee** de la table **eleves**
-  * de l'année en cours : **$annee**+  * l'année en cours : **$annee**
 pour construire la requête :  pour construire la requête : 
-<code mysql>SELECT * from eleves where matricule = '$matricule' AND DN_annee = '$annee'-7</code> +<code mysql>SELECT * FROM eleves 
-Si l'élève dont le matricule = **$matricule** a bien 7 ans au 31 décembre de l'année **$annee**, alors le résultat sera = 1, sinon 0.+WHERE matricule = '$matricule' 
 +  AND DN_annee  = '$annee'-7</code> 
 +Si l'élève dont le matricule = **$matricule** a bien 7 ans (strictement) au 31 décembre de l'année **$annee**, alors le résultat sera = 1, sinon 0.
  
 __Exemple 2__ : nous allons vérifier l'âge de l'élève dans la fourchette 10-14 ans inclus :  __Exemple 2__ : nous allons vérifier l'âge de l'élève dans la fourchette 10-14 ans inclus : 
-<code mysql>SELECT * from eleves where matricule = '$matricule' AND (DN_annee <= '$annee'-10 AND DN_annee >= '$annee'-14)</code>+<code mysql>SELECT * FROM eleves 
 +WHERE matricule = '$matricule'  
 +  AND  (DN_annee <= '$annee'-10  
 +    AND DN_annee >= '$annee'-14)</code> 
 + 
 +__Exemple 3__  : recherche si l'élève a suivi le cours de Diction-Orthophonie (0049) les années antérieures (et donc pas cette année) : 
 +<code mysql>SELECT * FROM curriculum 
 +WHERE matricule = '$matricule'  
 +  AND code_cours = '0049' 
 +  AND annee     <= '$annee'-1</code> 
 + 
 +Ce système de règles permet donc de tester des cas simple, mais aussi bien plus complexe comme : 
 + 
 +__Exemple 4__ : Test du contenu de la L2 selon [[admin_libelles_officiels|Administration du système : gestion des libellés officiels]] : 
 +<code mysql>SELECT * FROM curriculum  
 +LEFT JOIN cours    ON curriculum.code_cours   = cours.id  
 +LEFT JOIN libelles ON cours.libelle_tableau_2 = libelles.code  
 +WHERE curriculum.matricule  = '$matricule'  
 +  AND curriculum.code_cours = '$code_cours'  
 +  AND libelles.libelle      = 'Formation instrumentale'</code> 
 + 
 +Ces "tests" sont ensuite comparés à une valeur, généralement '>=1' (test validé). 
 + 
 +__Exemple 5__ : Certains cas nécessitent une comparaison à 2 pour, par exemple, déterminer si un élève a subit ou non un double échec dans le cours concerné : 
 +<code mysql>SELECT * FROM curriculum 
 +LEFT JOIN filieres ON curriculum.degre = filieres.id  
 +WHERE curriculum.matricule = '$matricule'  
 +  AND (filieres.degre  = '$degre' 
 +   OR curriculum.degre = '$degre')  
 +  AND code_cours = '$code_cours'</code> 
 + 
 +Dans ce cas, si le nombre d'items est ≥ à 2, l'élève satisfait la règle d'exclusion. 
 + 
 + 
 +==== Actions de Firewall™ ==== 
 + 
 +En combinant une ou plusieurs règles ci-dessus, nous allons pouvoir piloter les ** actions de Firewall™**, à savoir interdire l'accès d'un élève dans une situation contextuelle à un ou plusieurs curriculums. Si l'interdiction n'est pas décrite, l'accès est autorisé par défaut. Cela permet aux structures simples ou débutantes de se passer du ''Firewall™''
 +Les opérandes classiques sont : 
 +  * **+** (plus) : permet de vérifier si au moins une des règles est satisfaisante. Il s'agit du **OU** logique ; 
 +  * ***** (fois) : permet de vérifier si toutes les règles sont satisfaisants. Il s'agit du **ET** logique ; 
 +  * **!** : permet de prendre la négation d'une règle. Il s'agit du **NON** logique ; 
 +  * **(** et **)** : permettent de grouper des règles ensembles. 
 + 
 +__Exemple 6__ : Nous allons interdire l'accès au Domaine de la Musique tout entier suite à la décision du conseil de classe, basée sur un double échec en Formation Musicale. 
 + 
 +Tout d'abord, générons d'abord la règle qui précise la condition (**$regle4**) :  
 +<code mysql>SELECT * FROM curriculum  
 +WHERE matricule               = '$matricule' 
 +  AND decision_conseil_classe = 'plus_admis' 
 +  AND code_cours              = '0203'</code> 
 +Là, tout simplement, nous exploiterons sa valeur directe :  
 + 
 +|  {{::admin_firewall_action_1.png?400|}} 
 + 
 +et préciserons le refus d'accès au Domaine de la Musique. 
 + 
 +Les message en cas de refus est précisé dans l'Assistant lors de la tentative d'enrôlement à un curriculum interdit. Ainsi, le personnel d'inscription sait motiver l'interdiction. 
 + 
 +__Exemple 7__ : Nous allons vérifier l'accès au cours de Pointes du Domaine de la Danse sur base de 2 règles :  au préalable être inscrit en filière de qualification, ou de transition 3<sup>e</sup> année, du cours de Danse Classique, ou avoir terminé l'une de ces filières. 
 + 
 +Générons donc la première règle : Danse Classique Q ou T3 et + en cours cette année (**$regle19**) : 
 +<code mysql>SELECT * FROM curriculum  
 +LEFT JOIN filieres ON curriculum.degre = filieres.id  
 +WHERE curriculum.matricule = '$matricule'  
 +AND (   filieres.degre   LIKE 'Q%'  
 +     OR curriculum.degre LIKE 'Q%'  
 +     OR filieres.degre   = 'T3'  
 +     OR curriculum.degre = 'T3'  
 +     OR filieres.degre   = 'T4'  
 +     OR curriculum.degre = 'T4'  
 +     OR filieres.degre   = 'T5'  
 +     OR curriculum.degre = 'T5'  
 +     OR filieres.degre   = 'T6'  
 +     OR curriculum.degre = 'T6')  
 +AND curriculum.code_cours = '0020'  
 +AND curriculum.annee      = '$annee'</code> 
 + 
 +Générons ensuite la seconde règle : danse classique Q7 ou T6 réussi (**$regle20**) 
 +<code mysql>SELECT * FROM curriculum  
 +LEFT JOIN filieres ON curriculum.degre = filieres.id  
 +WHERE curriculum.matricule = '$matricule'  
 +  AND (filieres.degre = 'Q7' OR curriculum.degre = 'Q7'  
 +    OR filieres.degre = 'T6' OR curriculum.degre = 'T6'
 +  AND code_cours = '0020'  
 +  AND decision_conseil_classe = 'reussi'</code> 
 + 
 +Nous refuserons donc l'accès au cours de Pointes du Domaine de la Danse, sur base du calcul suivant : 
 +<code php>! ( $regle19 + $regle20 )</code> 
 + 
 +|  {{::admin_firewall_action_2.png?400|}}  |
  
-Autre exemple : recherche si l'élève a suivi le cours de Diction-Orthophonie (0049) les années antérieures (et donc pas cette année) : +Une pléthore de cas est possible, et cette documentation ne saurait tous les égrainer. Nous vous suggérons de bien comprendre ces mécanismes, de consulter ces exemples ainsi que ceux de la [[http://www.lesahrweb.be/demo.php|démonstration]] accessible en ligne.
-<code mysql>SELECT * FROM curriculum WHERE matricule = '$matricule' AND code_cours = '0049' AND annee <= '$annee'-1</code>+
  
-Ce système de règle permet donc de tester des cas simple, mais aussi bien plus complexe comme :+Nous restons bien entendu à votre disposition pour réaliser les cas les plus complexes.
admin_firewall.1502282835.txt.gz · Dernière modification : (modification externe)