From 44f5d27b7a0061aea352ac2c6999a8450fad1b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Oudot?= Date: Wed, 24 Mar 2010 22:06:43 +0000 Subject: [PATCH] Prepare for 1.0rc1: * Update modules main version * make tidy * make manifest * make documentation --- .../doc/3.1-Install-prerequesites.html | 8 +- .../doc/4.6-DBI-user-backend.html | 84 +++++++++++++++++++ .../doc/4.6-SAML-user-backend.html | 20 +++++ build/lemonldap-ng/scripts/doc.pl | 4 +- modules/lemonldap-ng-common/META.yml | 2 +- .../lib/Lemonldap/NG/Common.pm | 2 +- modules/lemonldap-ng-handler/META.yml | 4 +- modules/lemonldap-ng-handler/Makefile.PL | 2 +- .../lib/Lemonldap/NG/Handler.pm | 2 +- modules/lemonldap-ng-manager/META.yml | 4 +- modules/lemonldap-ng-manager/Makefile.PL | 4 +- .../lib/Lemonldap/NG/Manager/Help.pm | 1 - .../lib/Lemonldap/NG/Manager/Sessions.pm | 3 +- .../lib/Lemonldap/NG/Manager/_Struct.pm | 40 ++++----- .../lib/Lemonldap/NG/Manager/_i18n.pm | 70 ++++++++-------- modules/lemonldap-ng-portal/META.yml | 6 +- modules/lemonldap-ng-portal/Makefile.PL | 4 +- .../lib/Lemonldap/NG/Portal.pm | 2 +- 18 files changed, 183 insertions(+), 79 deletions(-) diff --git a/build/lemonldap-ng/doc/3.1-Install-prerequesites.html b/build/lemonldap-ng/doc/3.1-Install-prerequesites.html index f743822a2..3ec97b04e 100644 --- a/build/lemonldap-ng/doc/3.1-Install-prerequesites.html +++ b/build/lemonldap-ng/doc/3.1-Install-prerequesites.html @@ -324,13 +324,13 @@ 1.0-rc1 -   + 0.96 -   + 0.93 -   + 0.93 -   + 0.91 diff --git a/build/lemonldap-ng/doc/4.6-DBI-user-backend.html b/build/lemonldap-ng/doc/4.6-DBI-user-backend.html index 288b46174..e63bc107a 100644 --- a/build/lemonldap-ng/doc/4.6-DBI-user-backend.html +++ b/build/lemonldap-ng/doc/4.6-DBI-user-backend.html @@ -54,6 +54,90 @@ +
+

DBI user + backend

+ +

+ + + +

Presentation

+ +

You can use any database to collect attributes + from authenticated user. All these attributes should be in only one table. + +

Configuration

+ +

All configuration is done in Manager, in DBI + parameters. First, choose "DBI" as user module. + +

Connection

+ +

Set how to reach the database: + + If you already use DBI as authentication + backend, you can rely on its configuration and let previous + parameters empty. + +

Schema

+ +

Describe your database: + + If you already use DBI as authentication + backend, you can rely on its configuration and let previous + parameters empty (it will use the same table as authentication table). + +

Attributes

+ +

Edit exported attributes to map local variables + with column names. + +

See also

+ + +
+ diff --git a/build/lemonldap-ng/doc/4.6-SAML-user-backend.html b/build/lemonldap-ng/doc/4.6-SAML-user-backend.html index a32217783..001b3247b 100644 --- a/build/lemonldap-ng/doc/4.6-SAML-user-backend.html +++ b/build/lemonldap-ng/doc/4.6-SAML-user-backend.html @@ -54,6 +54,26 @@ +
+

SAML user + backend

+ +

+ + + +

Presentation

+ +

SAML user backend only works with SAML + authentication backend. It will just send attribute requests on Identity + Provider to get missing mandatory attributes. + +

See Auth SAML. +
+ diff --git a/build/lemonldap-ng/scripts/doc.pl b/build/lemonldap-ng/scripts/doc.pl index 6c91fc8b4..7d8ebe9c0 100755 --- a/build/lemonldap-ng/scripts/doc.pl +++ b/build/lemonldap-ng/scripts/doc.pl @@ -65,8 +65,8 @@ my $docs = { 'http://wiki.lemonldap.ow2.org/xwiki/bin/view/NG/UserDBLDAP' => '4.6-LDAP-user-backend.html', 'http://wiki.lemonldap.ow2.org/xwiki/bin/view/NG/UserDBNull' => '4.6-Null-user-backend.html', 'http://wiki.lemonldap.ow2.org/xwiki/bin/view/NG/UserDBMulti' => '4.6-Multiple-user-backend.html', - 'http://wiki.lemonldap.ow2.org/xwiki/bin/view/NG/userDBSAML' => '4.6-SAML-user-backend.html', - 'http://wiki.lemonldap.ow2.org/xwiki/bin/view/NG/userDBDBI' => '4.6-DBI-user-backend.html', + 'http://wiki.lemonldap.ow2.org/xwiki/bin/view/NG/UserDBSAML' => '4.6-SAML-user-backend.html', + 'http://wiki.lemonldap.ow2.org/xwiki/bin/view/NG/UserDBDBI' => '4.6-DBI-user-backend.html', # Password backends 'http://wiki.lemonldap.ow2.org/xwiki/bin/view/NG/PasswordDBLDAP' => '4.7-LDAP-password-backend.html', diff --git a/modules/lemonldap-ng-common/META.yml b/modules/lemonldap-ng-common/META.yml index e145cf90f..0add9d331 100644 --- a/modules/lemonldap-ng-common/META.yml +++ b/modules/lemonldap-ng-common/META.yml @@ -1,6 +1,6 @@ --- #YAML:1.0 name: Lemonldap-NG-Common -version: 0.95 +version: 0.96 abstract: Common files for Lemonldap::NG infrastructure author: - Xavier Guimard , Clément Oudot diff --git a/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common.pm b/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common.pm index 0a400c5ab..d4763092f 100644 --- a/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common.pm +++ b/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common.pm @@ -1,6 +1,6 @@ package Lemonldap::NG::Common; -our $VERSION = '0.95'; +our $VERSION = '0.96'; use strict; diff --git a/modules/lemonldap-ng-handler/META.yml b/modules/lemonldap-ng-handler/META.yml index d230e8851..fab9289d4 100644 --- a/modules/lemonldap-ng-handler/META.yml +++ b/modules/lemonldap-ng-handler/META.yml @@ -1,6 +1,6 @@ --- #YAML:1.0 name: Lemonldap-NG-Handler -version: 0.92 +version: 0.93 abstract: The Apache protection module part of author: - Xavier Guimard @@ -15,7 +15,7 @@ requires: Cache::Cache: 0 CGI: 3.08 IO::Pipe: 0 - Lemonldap::NG::Common: 0.93 + Lemonldap::NG::Common: 0.96 LWP::UserAgent: 0 URI: 0 no_index: diff --git a/modules/lemonldap-ng-handler/Makefile.PL b/modules/lemonldap-ng-handler/Makefile.PL index 91920c0c6..a2fec2db4 100644 --- a/modules/lemonldap-ng-handler/Makefile.PL +++ b/modules/lemonldap-ng-handler/Makefile.PL @@ -17,7 +17,7 @@ WriteMakefile( 'Apache::Session' => 0, 'LWP::UserAgent' => 0, 'Cache::Cache' => 0, - 'Lemonldap::NG::Common' => 0.93, + 'Lemonldap::NG::Common' => 0.96, 'CGI' => 3.08, 'URI' => 0, }, # e.g., Module::Name => 1.1 diff --git a/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler.pm b/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler.pm index afd595c38..bf7efebd3 100644 --- a/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler.pm +++ b/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler.pm @@ -5,7 +5,7 @@ # Alias for Lemonldap::NG::Handler::SharedConf package Lemonldap::NG::Handler; -our $VERSION = "0.92"; +our $VERSION = "0.93"; use Lemonldap::NG::Handler::SharedConf; use base qw(Lemonldap::NG::Handler::SharedConf); diff --git a/modules/lemonldap-ng-manager/META.yml b/modules/lemonldap-ng-manager/META.yml index f7a86a115..991f5a60c 100644 --- a/modules/lemonldap-ng-manager/META.yml +++ b/modules/lemonldap-ng-manager/META.yml @@ -14,8 +14,8 @@ requires: CGI: 3.08 HTML::Template: 0 IO::String: 0 - Lemonldap::NG::Common: 0.93 - Lemonldap::NG::Handler: 0.91 + Lemonldap::NG::Common: 0.96 + Lemonldap::NG::Handler: 0.93 LWP::UserAgent: 0 XML::LibXML: 0 XML::LibXSLT: 0 diff --git a/modules/lemonldap-ng-manager/Makefile.PL b/modules/lemonldap-ng-manager/Makefile.PL index 3aef3a70c..1f563e526 100644 --- a/modules/lemonldap-ng-manager/Makefile.PL +++ b/modules/lemonldap-ng-manager/Makefile.PL @@ -10,8 +10,8 @@ WriteMakefile( PREREQ_PM => { 'CGI' => 3.08, 'HTML::Template' => 0, - 'Lemonldap::NG::Common' => 0.93, - 'Lemonldap::NG::Handler' => 0.91, + 'Lemonldap::NG::Common' => 0.96, + 'Lemonldap::NG::Handler' => 0.93, 'LWP::UserAgent' => 0, 'XML::LibXML' => 0, 'XML::LibXSLT' => 0, diff --git a/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Help.pm b/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Help.pm index 0e523633b..1a9e658a1 100644 --- a/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Help.pm +++ b/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Help.pm @@ -41,7 +41,6 @@ __END__ =pod =cut - ## authParams # en sub help_authParams_en { diff --git a/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Sessions.pm b/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Sessions.pm index d6c451d76..4d5ca2aa2 100644 --- a/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Sessions.pm +++ b/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Sessions.pm @@ -524,7 +524,8 @@ sub ajaxNode { sub window { my $self = shift; my $root = shift; - print '
+ print +'
diff --git a/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/_Struct.pm b/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/_Struct.pm index 50476a69b..252814340 100644 --- a/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/_Struct.pm +++ b/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/_Struct.pm @@ -128,7 +128,7 @@ sub struct { qw(portalSkin portalAutocomplete portalRequireOldPassword portalUserAttr portalOpenLinkInNewWindow) ], - portalSkin => 'text:/portalSkin:portalParams:skinSelect', + portalSkin => 'text:/portalSkin:portalParams:skinSelect', portalAutocomplete => 'bool:/portalAutocomplete', portalRequireOldPassword => 'bool:/portalRequireOldPassword', @@ -467,21 +467,21 @@ sub struct { exportedVars => { _nodes => ['hash:/exportedVars:vars:btext'], _js => 'hashRoot', - _help => 'vars', + _help => 'vars', }, # MACROS macros => { _nodes => ['hash:/macros:macros:btext'], _js => 'hashRoot', - _help => 'macros', + _help => 'macros', }, # GROUPS groups => { _nodes => ['hash:/groups:groups:btext'], _js => 'hashRoot', - _help => 'groups', + _help => 'groups', }, }, @@ -956,15 +956,15 @@ sub testStruct { keyTest => sub { return 1; }, }, }, - samlServicePrivateKey => $testNotDefined, - samlEntityID => $testNotDefined, - samlOrganizationDisplayName => $testNotDefined, - samlOrganizationName => $testNotDefined, - samlOrganizationURL => $testNotDefined, - samlSPSSODescriptorAuthnRequestsSigned => $boolean, - samlSPSSODescriptorKeyDescriptorSigning => $testNotDefined, - samlSPSSODescriptorSingleLogoutServiceHTTP => $testNotDefined, - samlSPSSODescriptorSingleLogoutServiceSOAP => $testNotDefined, + samlServicePrivateKey => $testNotDefined, + samlEntityID => $testNotDefined, + samlOrganizationDisplayName => $testNotDefined, + samlOrganizationName => $testNotDefined, + samlOrganizationURL => $testNotDefined, + samlSPSSODescriptorAuthnRequestsSigned => $boolean, + samlSPSSODescriptorKeyDescriptorSigning => $testNotDefined, + samlSPSSODescriptorSingleLogoutServiceHTTP => $testNotDefined, + samlSPSSODescriptorSingleLogoutServiceSOAP => $testNotDefined, samlSPSSODescriptorAssertionConsumerServiceHTTPArtifact => $testNotDefined, samlSPSSODescriptorAssertionConsumerServiceHTTPPost => $testNotDefined, @@ -1108,12 +1108,12 @@ sub defaultConf { 'samlIDPMetaDataOptionsAllowLoginFromIDP' => '1', } }, - samlServicePrivateKey => '', - samlEntityID => $portal . '/saml/metadata', - samlOrganizationDisplayName => 'Example', - samlOrganizationName => 'Example', - samlOrganizationURL => 'http://www.example.com', - samlSPSSODescriptorAuthnRequestsSigned => '0', + samlServicePrivateKey => '', + samlEntityID => $portal . '/saml/metadata', + samlOrganizationDisplayName => 'Example', + samlOrganizationName => 'Example', + samlOrganizationURL => 'http://www.example.com', + samlSPSSODescriptorAuthnRequestsSigned => '0', samlSPSSODescriptorKeyDescriptorSigning => '', samlSPSSODescriptorSingleLogoutServiceHTTP => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;' @@ -1141,7 +1141,7 @@ sub defaultConf { samlSPSSODescriptorNameIDFormatPersistent => '1', samlSPSSODescriptorNameIDFormatTransient => '0', samlIDPSSODescriptorWantAuthnRequestsSigned => '0', - samlIDPSSODescriptorKeyDescriptorSigning => '', + samlIDPSSODescriptorKeyDescriptorSigning => '', samlIDPSSODescriptorSingleSignOnServiceHTTP => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;' . $portal diff --git a/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/_i18n.pm b/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/_i18n.pm index 71b8fd1fe..0fc2928f1 100644 --- a/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/_i18n.pm +++ b/modules/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/_i18n.pm @@ -207,23 +207,23 @@ sub en { samlIDPMetaDataOptionsAllowProxiedAuthn => 'Allow proxied authentication', samlIDPMetaDataOptionsAllowLoginFromIDP => 'Allow login from IDP', - samlIDPMetaDataOptionsSSOBinding => 'SSO binding', - samlIDPMetaDataOptionsSLOBinding => 'SLO binding', - samlIDPMetaDataOptionsResolutionRule => 'Resolution rule', - samlServiceMetaData => 'SAML 2 Service', - samlEntityID => 'Entity Identifier', - samlOrganization => 'Organization', - samlOrganizationDisplayName => 'Display Name', - samlOrganizationName => 'Name', - samlOrganizationURL => 'URL', - samlSPSSODescriptor => 'Service Provider', + samlIDPMetaDataOptionsSSOBinding => 'SSO binding', + samlIDPMetaDataOptionsSLOBinding => 'SLO binding', + samlIDPMetaDataOptionsResolutionRule => 'Resolution rule', + samlServiceMetaData => 'SAML 2 Service', + samlEntityID => 'Entity Identifier', + samlOrganization => 'Organization', + samlOrganizationDisplayName => 'Display Name', + samlOrganizationName => 'Name', + samlOrganizationURL => 'URL', + samlSPSSODescriptor => 'Service Provider', samlSPSSODescriptorAuthnRequestsSigned => 'Signed Authentication Request', - samlSPSSODescriptorKeyDescriptorSigning => 'Signing Key', - samlSPSSODescriptorSingleLogoutService => 'Single Logout', - samlSPSSODescriptorSingleLogoutServiceHTTP => 'HTTP Service', - samlSPSSODescriptorSingleLogoutServiceSOAP => 'SOAP Service', - samlSPSSODescriptorAssertionConsumerService => 'Assertion Consumer', + samlSPSSODescriptorKeyDescriptorSigning => 'Signing Key', + samlSPSSODescriptorSingleLogoutService => 'Single Logout', + samlSPSSODescriptorSingleLogoutServiceHTTP => 'HTTP Service', + samlSPSSODescriptorSingleLogoutServiceSOAP => 'SOAP Service', + samlSPSSODescriptorAssertionConsumerService => 'Assertion Consumer', samlSPSSODescriptorAssertionConsumerServiceHTTPArtifact => 'HTTP Artifact', samlSPSSODescriptorAssertionConsumerServiceHTTPPost => 'HTTP POST', @@ -236,14 +236,14 @@ sub en { samlIDPSSODescriptor => 'Identity Provider', samlIDPSSODescriptorWantAuthnRequestsSigned => 'Signed Authentication Request', - samlIDPSSODescriptorKeyDescriptorSigning => 'Clef de signature', - samlIDPSSODescriptorSingleSignOnService => 'Single Sign on', - samlIDPSSODescriptorSingleSignOnServiceHTTP => 'HTTP Service', - samlIDPSSODescriptorSingleSignOnServiceSOAP => 'SOAP Service', - samlIDPSSODescriptorSingleLogoutService => 'Single Logout', - samlIDPSSODescriptorSingleLogoutServiceHTTP => 'HTTP Service', - samlIDPSSODescriptorSingleLogoutServiceSOAP => 'SOAP Service', - samlIDPSSODescriptorArtifactResolutionService => 'Artifact Resolution', + samlIDPSSODescriptorKeyDescriptorSigning => 'Clef de signature', + samlIDPSSODescriptorSingleSignOnService => 'Single Sign on', + samlIDPSSODescriptorSingleSignOnServiceHTTP => 'HTTP Service', + samlIDPSSODescriptorSingleSignOnServiceSOAP => 'SOAP Service', + samlIDPSSODescriptorSingleLogoutService => 'Single Logout', + samlIDPSSODescriptorSingleLogoutServiceHTTP => 'HTTP Service', + samlIDPSSODescriptorSingleLogoutServiceSOAP => 'SOAP Service', + samlIDPSSODescriptorArtifactResolutionService => 'Artifact Resolution', samlIDPSSODescriptorArtifactResolutionServiceArtifact => 'Artifact Service', samlIDPSSODescriptorNameIDFormat => 'NameID Format', @@ -434,11 +434,11 @@ sub fr { samlSPSSODescriptor => 'Fournisseur de service', samlSPSSODescriptorAuthnRequestsSigned => 'Requête d\'authentification signé', - samlSPSSODescriptorKeyDescriptorSigning => 'Clef de signature', - samlSPSSODescriptorSingleLogoutService => 'Single Logout', - samlSPSSODescriptorSingleLogoutServiceHTTP => 'Service HTTP', - samlSPSSODescriptorSingleLogoutServiceSOAP => 'Service SOAP', - samlSPSSODescriptorAssertionConsumerService => 'Assertions', + samlSPSSODescriptorKeyDescriptorSigning => 'Clef de signature', + samlSPSSODescriptorSingleLogoutService => 'Single Logout', + samlSPSSODescriptorSingleLogoutServiceHTTP => 'Service HTTP', + samlSPSSODescriptorSingleLogoutServiceSOAP => 'Service SOAP', + samlSPSSODescriptorAssertionConsumerService => 'Assertions', samlSPSSODescriptorAssertionConsumerServiceHTTPArtifact => 'HTTP Artifact', samlSPSSODescriptorAssertionConsumerServiceHTTPPost => 'POST HTTP', @@ -451,13 +451,13 @@ sub fr { samlIDPSSODescriptor => 'Fournisseur d\'identité', samlIDPSSODescriptorWantAuthnRequestsSigned => 'Requête d\'authentification signé', - samlIDPSSODescriptorKeyDescriptorSigning => 'Clef de signature', - samlIDPSSODescriptorSingleSignOnService => 'Single Sign on', - samlIDPSSODescriptorSingleSignOnServiceHTTP => 'Service HTTP', - samlIDPSSODescriptorSingleSignOnServiceSOAP => 'Service SOAP', - samlIDPSSODescriptorSingleLogoutService => 'Single Logout', - samlIDPSSODescriptorSingleLogoutServiceHTTP => 'Service HTTP', - samlIDPSSODescriptorSingleLogoutServiceSOAP => 'Service SOAP', + samlIDPSSODescriptorKeyDescriptorSigning => 'Clef de signature', + samlIDPSSODescriptorSingleSignOnService => 'Single Sign on', + samlIDPSSODescriptorSingleSignOnServiceHTTP => 'Service HTTP', + samlIDPSSODescriptorSingleSignOnServiceSOAP => 'Service SOAP', + samlIDPSSODescriptorSingleLogoutService => 'Single Logout', + samlIDPSSODescriptorSingleLogoutServiceHTTP => 'Service HTTP', + samlIDPSSODescriptorSingleLogoutServiceSOAP => 'Service SOAP', samlIDPSSODescriptorArtifactResolutionService => 'Résolution d\'Artifact', samlIDPSSODescriptorArtifactResolutionServiceArtifact => diff --git a/modules/lemonldap-ng-portal/META.yml b/modules/lemonldap-ng-portal/META.yml index df525f5c7..e13fc55ec 100644 --- a/modules/lemonldap-ng-portal/META.yml +++ b/modules/lemonldap-ng-portal/META.yml @@ -1,6 +1,6 @@ --- #YAML:1.0 name: Lemonldap-NG-Portal -version: 0.90 +version: 0.91 abstract: The authentication portal part of Lemonldap::NG Web-SSO author: - Xavier Guimard , Clément Oudot , Thomas Chemineau , Mikael Ates @@ -15,8 +15,8 @@ requires: CGI: 3.08 HTML::Template: 0 IO::String: 0 - Lemonldap::NG::Common: 0.93 - Lemonldap::NG::Handler: 0.91 + Lemonldap::NG::Common: 0.96 + Lemonldap::NG::Handler: 0.93 Net::LDAP: 0 String::Random: 0 XML::LibXML: 0 diff --git a/modules/lemonldap-ng-portal/Makefile.PL b/modules/lemonldap-ng-portal/Makefile.PL index 6521191dd..288476b48 100644 --- a/modules/lemonldap-ng-portal/Makefile.PL +++ b/modules/lemonldap-ng-portal/Makefile.PL @@ -22,8 +22,8 @@ WriteMakefile( 'Net::LDAP' => 0, 'CGI' => 3.08, 'HTML::Template' => 0, - 'Lemonldap::NG::Common' => 0.93, - 'Lemonldap::NG::Handler' => 0.91, + 'Lemonldap::NG::Common' => 0.96, + 'Lemonldap::NG::Handler' => 0.93, 'String::Random' => 0, 'XML::LibXML' => 0, 'XML::LibXSLT' => 0, diff --git a/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal.pm b/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal.pm index ea9cc2bd5..11755baaa 100644 --- a/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal.pm +++ b/modules/lemonldap-ng-portal/lib/Lemonldap/NG/Portal.pm @@ -5,7 +5,7 @@ # Alias for Lemonldap::NG::SharedConf package Lemonldap::NG::Portal; -our $VERSION = '0.90'; +our $VERSION = '0.91'; use Lemonldap::NG::Portal::SharedConf; use base 'Lemonldap::NG::Portal::SharedConf';
Sessions actives Réseaux