Les variables exportées sont des variables disponibles pour <ahref="writingrulesand_headers.html"class="wikilink1"title="documentation:2.0:writingrulesand_headers">écrire des règles d'accès et des en-têtes</a>. Elles sont extraites de la base de données des utilisateurs par le <ahref="start.html#authentication_users_and_password_databases"class="wikilink1"title="documentation:2.0:start">module utilisateurs</a>.
</p>
<p>
Pour créer une variable, il faut simplement associer des attributs utilisateurs dans <abbrtitle="LemonLDAP::NG">LL::NG</abbr> en utilisant <code>Variables</code> » <code>Variables exportées</code>. 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.
</p>
<p>
Exemples pour <ahref="authldap.html"class="wikilink1"title="documentation:2.0:authldap">LDAP</a> :
<tdclass="col0 centeralign"> numero </td><tdclass="col1 centeralign"> employeeNumber </td>
</tr>
<trclass="row3 rowodd">
<tdclass="col0 centeralign"> nom </td><tdclass="col1 centeralign"> sn </td>
</tr>
</table></div><!-- EDIT3 TABLE [587-693] -->
<p>
On peut définir des variables exportées pour chaque module dans sa propre configuration. Les variables définies dans le <code>Variables exportées</code> 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.
</p>
<p>
<imgsrc="documentation/manager-exported-variables.png"class="mediacenter"title="Variables exportées dans le manager"alt="Variables exportées dans le manager"/>
<divclass="notetip">You can define environment variables in <code>Exported variables</code>, this allows one to populate user session with some environment values. Les variables d'environnement ne seront pas demandées à la base de données utilisateurs.
Les macros et les groupes sont calculées pendant le processus d'authentification par le portail :
</p>
<ul>
<liclass="level1"><divclass="li"> Les macros sont utilisées pour étendre (ou réécrire) les <spanclass="curid"><ahref="exportedvars.html"class="wikilink1"title="documentation:2.0:exportedvars">variables exportées</a></span>. 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</div>
<liclass="level1"><divclass="li"> macros can also be used to import environment variables <em>(these variables are in CGI format)</em>. Example: <code>$ENV{HTTP_COOKIE}</code></div>
<liclass="level1"><divclass="li"> 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</div>
</li>
<liclass="level1"><divclass="li"> On peut également définir des groupes dans <code>$hGroups</code> qui est une référence à une table de hashage de la forme :</div>
<divclass="noteclassic">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.
</div><divclass="noteimportant">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.