Lemonldap::NG::Portal::Main::Plugin - Base class for Lemonldap::NG::Portal modules (plugins, authentication modules,...).
package Lemonldap::NG::Portal::My::Plugin; use Mouse; extends 'Lemonldap::NG::Portal::Main::Plugin'; use constant beforeAuth => 'verifyIP'; sub init { my ($self) = @_; $self->addUnauthRoute( mypath => 'hello', [ 'GET', 'PUT' ] ); $self->addAuthRoute( mypath => 'wellcome', [ 'GET', 'PUT' ] ); return 1; } sub verifyIP { my ($self, $req) = @_; return PE_ERROR if($req->address !~ /^10/); return PE_OK; } sub hello { my ($self, $req) = @_; ... return $self->p->sendJSONresponse($req, { hello => 1 }); } sub wellcome { my ($self, $req) = @_; ... return $self->p->sendHtml($req, 'template', params => { WELLCOME => 1 }); }
Lemonldap::NG::Portal::Main::Plugin provides many methods to write easily Lemonldap::NG addons.
init() is called for each plugin. If one plugin initialization fails (init() returns 0), the portal responds a 500 status code for each request.
Custom plugins can be inserted in portal by declaring them in lemonldap-ng.ini file, section [portal], key customPlugins:
lemonldap-ng.ini
[portal]
customPlugins
[portal] customPlugins = My::Plugin1, My::Plugin2
Plugins must be valid packages well found in @INC.
@INC
Plugins can declare unauthRoutes/authRoutes during this initialization (= /path/info). Methods declared in this way must be declared in the plugin class. They will be called this the $req argument: the HTTP request (Lemonldap::NG::Portal::Main::Request). These methods must return a valid PSGI response. You can also use sendJSONresponse() or sendHtml() methods (see Lemonldap::NG::Common::PSGI).
Example:
sub init { my ($self) = @_; $self->addUnauthRoute( mypath => 'hello', [ 'GET', 'PUT' ] ); $self->addAuthRoute( mypath => 'wellcome', [ 'GET', 'PUT' ] ); return 1; } sub hello { my ($self, $req) = @_; ... return $self->p->sendJSONresponse($req, { hello => 1 }); } sub wellcome { my ($self, $req) = @_; ... return $self->p->sendHtml($req, 'template', params => { WELLCOME => 1 }); }
A plugin which wants to be inserted in authentication process has to declare constants containing the name of the method to run. The following entry points are available.
beforeAuth
betweenAuthAndDatas
sessionInfo
afterDatas
forAuthUser
beforeLogout
Note: methods inserted so must return a PE_* constant. See Lemonldap::NG::Portal::Main::Constants.
http://lemonldap-ng.org
Use OW2 system to report bug or ask for features: http://jira.ow2.org
Lemonldap::NG is available at http://forge.objectweb.org/project/showfiles.php?group_id=274
See COPYING file for details.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
To install Lemonldap::NG::Portal, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Lemonldap::NG::Portal
CPAN shell
perl -MCPAN -e shell install Lemonldap::NG::Portal
For more information on module installation, please visit the detailed CPAN module installation guide.