Depuis la version 0.9.4, LemonLDAP::NG peut être utilisé pour notifier des messages aux utilisateurs : si un utilisateur a un message, celui-ci est affiché lorsqu'il accède au portail. Si le message contient des cases à cocher, l'utilisateur doit toutes les cocher, sinon il ne peut obtenir de cookie de session.
Depuis la version 1.1.0, un explorateur de notifications est disponible dans le manager, et les notifications peuvent être faites pour tous les utilisateurs, avec possibilité d'affichage conditionnel. Lorsque l'utilisateur accepte la notification, la référence est stockée dans ses données de session persistentes.
Il suffit d'activer les notifications dans le manager (Paramètres généraux > Paramètres avancés > Notifications > Activation) ou dans lemonldap-ng.ini :
[portal] notification = 1
Par défaut, les notifications sont stockées dans la même base de données que la configuration :
On peut changer les paramètres par défaut en utilisant les paramètres “notificationStorage” et “notificationStorageOptions” avec la même syntaxe que les paramètres de stockage de la configuration. pour ce faire dans le manager, aller dans Paramètres généraux > Paramètres avancés > Notifications.
Les paramètres pour le backend File sont les mêmes que ceux du backend de configuration File.
mkdir /usr/local/lemonldap-ng/notifications/ chown www-data /usr/local/lemonldap-ng/notifications/
_
, ce qui peut poser problème si on enregistre des notifications pour des utilsateur ayant un caractère _
dans leur nom de connexion. On peut changer ce séparateur en changeant la valeur de l'option fileNameSeparator
par exemple @
.
Pour résumer les options disponibles :
Les paramètres pour le backend DBI sont les mêmes que ceux du backend de configuration DBI.
CREATE TABLE notifications ( DATE datetime NOT NULL, uid VARCHAR(255) NOT NULL, REF VARCHAR(255) NOT NULL, cond VARCHAR(255) DEFAULT NULL, xml longblob NOT NULL, done datetime DEFAULT NULL, PRIMARY KEY (DATE, uid,REF) )
Pour résumer les options disponibles :
Parameters for LDAP backend are the same as LDAP configuration backend.
Pour résumer les options disponibles :
Le module de notifications utilise une carte blanche pour gérer les notifications destinées à tous les utilisateurs. La valeur par défaut de cette carte blanche est allusers
, mais on peut la changer si allusers
est un nom d'utilisateur.
Pour le changer, aller dans Paramètres généraux > Paramètres avancés > Notifications > Carte blanche pour tous les utilisateurs, et mettre par exemple alluserscustom
.
Ainsi, créer une notification pour alluserscustom
affichera la notification à tous les utilisateurs.
The transformation between notification XML content and HTML display is done with XSLT. The default XSLT file is in portal/skins/common/notification.xsl. You can create your own XSLT file and store in another place, for example /etc/lemonldap-ng. Then just configure the new XSLT file path in Manager, go in General Parameters > Advanced Parameters > Notifications > Custom XSLT file and set for example /etc/lemonldap-ng/notification.xsl
.
Notifications are XML files containing:
allusers
) si la notification doit être affichée à tous les utilisateurs.
Exemple :
<root> <notification uid="foo.bar" date="2009-01-27" reference="ABC"> <title>Vous avez de nouvelles autorisations</title> <subtitle>Application 1</subtitle> <text>Vous êtes autorisé à accéder à appli-1</text> <subtitle>Application 2</subtitle> <text>Vous êtes autorisé à accéder à appli-2</text> <subtitle>Acceptation</subtitle> <check>Je reconnais savoir que je peux accéder à appli-1 </check> <check>Je reconnais savoir que je peux accéder à appli-2 </check> </notification> <notification uid="allusers" date="2009-01-27" reference="disclaimer" condition="$ipAddr =~ /^192/"> <title>Ceci est votre premier accès à ce système</title> <text>Soyez sage et ne le cassez pas.</text> <check>Bien sûr, je ne suis pas méchant !</check> </notification> </root>
In Manager, click on Notifications
and then on the Create
button.
Remplir ensuite tous les champs pour créer la notification. Seule la condition n'est pas exigée.
When all is ok, click on Save
.
New notifications can be insert using SOAP request (described in the WSDL file generated by buildPortalWSDL tool). To activate SOAP on the portal:
# SOAP functions for notification insertion (disabled by default) <Location /index.pl/notification> Order deny,allow Deny from all Allow from 192.168.2.0/24 </Location>
#!/usr/bin/perl use SOAP::Lite; use utf8; my $lite = SOAP::Lite ->uri('urn:Lemonldap::NG::Common::CGI::SOAPService') ->proxy('http://auth.example.com/index.pl/notification'); $r = $lite->newNotification( ' <root> <notification uid="foo.bar" date="2009-01-27" reference="ABC"> <text> You have been granted to access to appli-1 </text> <text> You have been granted to access to appli-2 </text> <check> I know that I can acces to appli-1 </check> <check> I know that I can acces to appli-2 </check> </notification> </root> '); if ( $r->fault ) { print STDERR "SOAP Error: " . $r->fault->{faultstring}; } else { my $res = $r->result(); print "$res notification(s) have been inserted\n"; }
You can also delete some notifications with SOAP, once SOAP is activated:
#!/usr/bin/perl use SOAP::Lite; use utf8; my $lite = SOAP::Lite ->uri('urn:Lemonldap::NG::Common::CGI::SOAPService') ->proxy('http://auth.example.com/index.pl/notification'); $r = $lite->deleteNotification('foo.bar', 'ABC'); if ( $r->fault ) { print STDERR "SOAP Error: " . $r->fault->{faultstring}; } else { my $res = $r->result(); print "$res notification(s) have been deleted\n"; }
Il suffit d'insérer une notification et de se connecter au portail en utilisant le même UID. Le message sera affiché.
Essayer alors de créer une notification globale (à l'utilisateur “allusers”), et se connecter avec n'importe quel compte, le message sera affiché.