Variables exportées

Présentation

Les variables exportées sont des variables disponibles pour écrire des règles d'accès et des en-têtes. Elles sont extraites de la base de données des utilisateurs par le module utilisateurs.

Pour créer une variable, il faut simplement associer des attributs utilisateurs dans LL::NG en utilisant Variables » Variables exportées. Pour chaque variable, le premier champ est le nom qui servira dans les règles, macros ou en-têtes et le second est le nom du champ dans la base de données utilisateurs.

Exemples pour LDAP :

Nom de Variable Attribut LDAP
uid uid
numero employeeNumber
nom sn

On peut définir des variables exportées pour chaque module dans sa propre configuration. Les variables définies dans le Variables exportées principal seront utilisées dans chaque backend. Celle définies dans le nœud « variables exportées » du module ne e seront que pour celui-ci.

Variables exportées dans le manager

On peut définir des variables d'environnement dans Variables exportées, ceci permet de peupler une session utilisateur avec des valeurs issues de l'environnement. Les variables d'environnement ne seront pas demandées à la base de données utilisateurs.

Étendre les variables en utilisant les macros et groups

Les macros et les groupes sont calculées pendant le processus d'authentification par le portail :

  • Les macros sont utilisées pour étendre (ou réécrire) les variables exportées. Une macro est stockée comme un attribut : elle peut contenir le résultat d'un calcul booléen ou n'importe quelle chaîne de caractères
  • les groupes sont stockées en chaîne de caractères séparées par des espaces dans l'attribut spécial “groups” : il contient les noms des groupes dont la règle à retournée une valeur non nulle pour l'utilisateur courant
  • On peut également définir des groupes dans $hGroups qui est une référence à une table de hashage de la forme :
$hGroups = {
          'group3' => {
                        'description' => [
                                           'Service 3',
                                           'Service 3 TEST'
                                         ],
                        'cn' => [
                                  'group3'
                                ],
                        'name' => 'group3'
                      },
          'admin' => {
                       'name' => 'admin'
                     }
        }

Exemples de macros:

# macro booléenne
isAdmin -> $uid eq 'foo' or $uid eq 'bar'
# autre macro 
displayName -> $givenName." ".$surName
 
# Utiliser une macro booléenne dans une règle
^/admin -> $isAdmin
# Utiliser une macro chaîne dans un en-tête HTTP
Display-Name -> $displayName

Exemples de groupes:

# group
admin -> $uid eq 'foo' or $uid eq 'bar'
 
# Use a group in a rule
^/admin -> $groups =~ /\badmin\b/
 
# Or with hGroups
^/admin -> defined $hGroups->{'admin'}
Noter que les groupes sont calculés après les macros, donc une règle de groupe peut utiliser une valeur issue d'une macro.
Les macros et groupes sont calculés dans l'ordre alpha-numerique, c'est à dire dans l'ordre d'affichage dans le manager. Par exemple, la macro “macro1” sear calculée avant la macro “macro2” : donc l'expression de macro2 peut utiliser la valeur $macro1. De même pour les groupes : une règle de groupe peut en utiliser une autre calculée précédemment.