Outils pour utilisateurs

Outils du site


Panneau latéral

Tables de matières :

LesahrWeb pour secrétariat et direction :
    1. Configuration académique globale :
    2. Configuration académique annuelle :
    3. Configuration propre à l'assistant :
    4. Configuration des listes globales :
    5. Configuration technique
LesahrWeb pour professeur :
LesahrWeb pour étudiant :
admin_firewall

Administration du système : gestion des règles de l'assistance (mode "Firewall™")

Le mode Firewall™ (ou Mur de feu) de LesahrWeb permet de bloquer l'accès d'un élève à un curriculum, sans échappatoire possible. Ce mode est exclusivement réservé à l'Assistant d'inscription : sélection du ou des domaines et cours suivis et est débrayé lors de la gestion des curriculums hors assistant.

Le Firewall™ est appuyé sur 2 grands axes :

  • la gestion de filtres poussés, appelés règles de base de Firewall™
    Une règle de base de FireWall™ est une recherche thématique par table. Les comparaisons, égalités, exclusions sont autorisées. Le résultat est la quantité d'items qui correspondent à la requête.
  • la gestion des combinaisons desdites règles, appelés actions de Firewall™
    Une action de FireWall™ est le résultat de l'association de une ou plusieurs règles interdisant ou obligeant un accès à un curriculum.

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 ici. Cependant, dans les exemples ci-après, les connaissances de base sont suffisantes.

SELECT * FROM table WHERE condition

Cette commande générique permet de sélectionner, et donc de compter, le nombre d'éléments qui satisfont à la condition.

LesahrWeb numérote les règles créees comme suit : $regle suivi d'un numéro (ex. $regle18). LesahrWeb 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 LesahrWeb se trouve, vous disposez des variables génériques suivantes :

  • $annee : année académique en cours
  • $matricule : matricule de l'élève en cours
  • $code_cours : pointeur vers le code cours
  • $adulte : peut valoir 'checked' (coché) ou 'unchecked' (non coché)
  • $degre : degré concerné (F1, T3,…)

Vous disposez également de tous les comparateurs disponibles dans MySQL :

<, <= , =, >=, >, !=, LIKE, BETWEEN,

Enfin, LesahrWeb vous offre un bouton de [ TEST ] qui permet de repérer les éventuelles erreurs syntaxiques et, dès correction, de tester le résultat de la règle.

Exemple 1 : nous allons vérifier que l'élève en cours de traitement par l'Assistant est âgé de 7 ans. Nous avons besoin de :

  • son matricule : $matricule
  • son année de naissance : DN_annee de la table eleves
  • l'année en cours : $annee

pour construire la requête :

SELECT * FROM eleves
WHERE matricule = '$matricule'
  AND DN_annee  = '$annee'-7

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 :

SELECT * FROM eleves
WHERE matricule = '$matricule' 
  AND  (DN_annee <= '$annee'-10 
    AND DN_annee >= '$annee'-14)

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) :

SELECT * FROM curriculum
WHERE matricule = '$matricule' 
  AND code_cours = '0049'
  AND annee     <= '$annee'-1

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 Administration du système : gestion des libellés officiels :

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'

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é :

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'

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) :

SELECT * FROM curriculum 
WHERE matricule               = '$matricule'
  AND decision_conseil_classe = 'plus_admis'
  AND code_cours              = '0203'

Là, tout simplement, nous exploiterons sa valeur directe :

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 3e 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) :

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'

Générons ensuite la seconde règle : danse classique Q7 ou T6 réussi ($regle20)

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'

Nous refuserons donc l'accès au cours de Pointes du Domaine de la Danse, sur base du calcul suivant :

! ( $regle19 + $regle20 )

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 démonstration accessible en ligne.

Nous restons bien entendu à votre disposition pour réaliser les cas les plus complexes.

admin_firewall.txt · Dernière modification: 20/06/2021 12:46 (modification externe)

Outils de la page