# Personnalisation du portail

Le portail est la partie visible de LemonLDAP::NG, toutes les interactions utilisateurs y sont affichées.

## thème

LemonLDAP::NG is shipped with 4 skins:

- pastel
- impact
- dark
- bootstrap

It is recommended to use `bootstrap` skin, as other may be deprecated in the future.

On peut faire le sien, voir comment personnaliser le thème ci-dessous.

### Thème par défaut

On peut changer le thème par défaut dans le manager : `paramètres généraux` > `Portail` > `Personnalisation` > `Skin`.

Select the `Custom` skin, then set the name of the skin you want to use in the input below.

### Skin background

Go in `General Parameters` > `Portal` > `Customization` > `Skin background`. You can define a background by selecting one of the available image. Use `None` to use the default skin background configuration.

### Règle du thème

On peut vouloir utiliser différents thèmes en fonction de l'URL demandée avant la redirection au portail ou en fonction de l'adresse IP de l'utilisateur.

Pour le réaliser, il faut créer une règle dans le manager : choisir `paramètres généraux` > `Portail` > `Personnalisation` > `Règle d'affichage du thème` et cliquer sur “Nouvelle clef”. Renseigner ensuite les deux champs ;

- Rule: a Perl expression (you can use %ENV hash to get environment variables, or $_url to get URL called before redirection, or $ipAddr to use user IP address). Si la règle correspond, le thème correspondant est appliqué.
- Thème : le nom du thème à utiliser.

### Fichiers thèmes

Un thème est composé de différents fichiers :

- .tpl: Perl HTML::Template files, for HTML content
- .css: CSS (styles)
- .js: Javascript
- images et autres médias

Un thème se réfère souvent au thème `common`, qui n'est pas un thème réel mais contient des objects partagés (tels les scripts, images et CSS).

### Personnalisation du thème

Les modifications apportées directement sur les fichiers thèmes risquent d'être perdus à la prochaine mise-à-jour. The best is to create your own skin, based on an existing skin.

Here we explain how to create a new skin, named `myskin`, from the `bootstrap` skin.

    cd /usr/share/lemonldap-ng/portal-skins/
    mkdir myskin
    cd myskin/
    cp -a ../bootstrap/fonts/ .
    cp -a ../bootstrap/js/ .
    cp -a ../bootstrap/css/ .
    mkdir images

Créer ensuite des liens symboliques pour éviter de réécrire tous les fichiers HTML (sauf si c'est souhaité).

    ln -s ../bootstrap/*.tpl .

Nous incluons des fichiers modèles qui peuvent être personnalisés :

- customhead.tpl : en-têtes HTML (tels les inclusions CSS, js)
- customheader.tpl : code HTML inséré dans le div d'en-tête
- customfooter.tpm : code HTML inséré dans le div de pied-de-page

Pour utiliser des fichiers personnalisés, effacer les liens et copier les fichiers dans le répertoire du thème :

    rm -f custom*
    cp ../bootstrap/custom* .

Create a symlink in main skin directory:

    ln -s /usr/share/lemonldap-ng/portal-skins/myskin /var/lib/lemonldap-ng/portal/skins/

Then you only have to edit JS/CSS and add your media to `myskin/images`. Mettre tous les codes HTML personnalisés dans les fichiers modèles personnalisés.

Pour configurer le nouveau thème dans le manager, selectionner le thème personnalisé et entrer le nom du nouveau thème dans le champ.

### Messages

Messages are defined in source code. S'ils ne conviennent pas, il peuvent être surchargés. You just need to know the ID of the message (look at Portal/Simple.pm) and then add to `lemonldap-ng.ini`:

    [portal]

    # Custom error messages
    error_0 = Big brother is watching you, authenticated user

    # Custom standard messages
    msg_22 = Your last connections

You can alse define messages in several languages:

    [portal]
    error_en_0 = Big brother is watching you, authenticated user
    error_fr_0 = Souriez vous êtes surveillés !

### Paramètres des modèles

Des paramètres modèles sont définis dans le code source. Pour ajouter un paramètre de modèle, l'ajouter dans `lemonldap-ng.ini`:

    [portal]

    # Custom template parameters
    tpl_myparam = world

On peut ensuite l'utiliser dans le modèle comme suit :

    Hello <TMPL_VAR NAME="myparam">!

## Buttons

This node allows one to enable/disable buttons on the login page:

- Vérifier l'historique : affiche une case à cocher sur le formulaire d'authentification permettant à l'utilisateur d'examiner son historique de connexion après l'ouverture de la session
- Reset password: display a link to reset your password page (for password based authentication backends)
- Register: display a link to register page (for password based authentication backends)

## Password management

- Exige l'ancien mot-de-passe : utilisé seulement dans le module de changement du mot-de-passe du menu, vérifie l'ancien mot-de-passse avant de le changer
- Hide old password: used only if the password need to be reset by the user (LDAP password policy), will hide the old password input
- Send mail on password change: send a mail if the password is changed from the Menu, or from forced password reset (LDAP password policy)

## Autres paramètres

- Attribut utilisateur : attribut de session à utiliser pour afficher `Connecté en tant que` dans le menu
- Nouvelle fenêtre : ouvre les liens du menu dans de nouvelles fenêtres
- Protection anti-iframe : ferme la frame parente pour éviter des attaques bien connues
- Ping interval: Number of milliseconds between each ping (Ajax request) on the portal menu. Set to 0 to dismiss checks.
- Show error on expired session: Display the error “Session expired”, which stops the authentication process. This is enabled by default but can be disabled to prevent transparent authentication (like SSL or Kerberos) to be stopped.
- Show error on mail not found: Display error if provided mail is not found in password reset by mail process. Disabled by default to prevent mail enumeration from this page.