.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.if !\nF .nr F 0
.if \nF>0 \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{\
. nr % 0
. nr F 2
. \}
.\}
.\" ========================================================================
.\"
.IX Title "Lemonldap::NG::Handler::PSGI 3pm"
.TH Lemonldap::NG::Handler::PSGI 3pm "2017-02-12" "perl v5.24.1" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
Lemonldap::NG::Handler::PSGI \- Base library for protected PSGI applications.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
\& package My::PSGI;
\&
\& use base Lemonldap::NG::Handler;
\&
\& sub init {
\& my ($self,$args) = @_;
\& $self\->protection(\*(Aqmanager\*(Aq);
\& # See Lemonldap::NG::Common::PSGI for more
\& ...
\& # Return a boolean. If false, then error message has to be stored in
\& # $self\->error
\& return 1;
\& }
\&
\& sub handler {
\& my ( $self, $req ) = @_;
\&
\& # Will be called only if authorisated
\& my $userId = $self\->userId;
\& ...
\& $self\->sendJSONresponse(...);
\& }
.Ve
.PP
This package could then be called as a \s-1CGI,\s0 using FastCGI,...
.PP
.Vb 1
\& #!/usr/bin/env perl
\&
\& use My::PSGI;
\& use Plack::Handler::FCGI; # or Plack::Handler::CGI
\&
\& Plack::Handler::FCGI\->new\->run( My::PSGI\->run() );
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
This package provides base class for Lemonldap::NG protected \s-1REST API.\s0
.SH "METHODS"
.IX Header "METHODS"
See Lemonldap::NG::Common::PSGI for logging methods, content sending,...
.SS "Accessors"
.IX Subsection "Accessors"
See Lemonldap::NG::Common::PSGI::Router for inherited accessors.
.PP
\fIprotection\fR
.IX Subsection "protection"
.PP
Level of protection. It can be one of:
.IP "'none': no protection" 4
.IX Item "'none': no protection"
.PD 0
.IP "'authenticate': all authenticated users are granted" 4
.IX Item "'authenticate': all authenticated users are granted"
.IP "'manager': access is granted following Lemonldap::NG rules" 4
.IX Item "'manager': access is granted following Lemonldap::NG rules"
.PD
.SS "Running methods"
.IX Subsection "Running methods"
\fIuser\fR
.IX Subsection "user"
.PP
Returns user session datas. If empty (no protection), returns:
.PP
.Vb 1
\& { _whatToTrace => \*(Aqanonymous\*(Aq }
.Ve
.PP
But if page is protected by server (Auth-Basic,...), it will return:
.PP
.Vb 1
\& { _whatToTrace => $REMOTE_USER }
.Ve
.PP
\fIUserId\fR
.IX Subsection "UserId"
.PP
Returns \fIuser()\fR\->{'_whatToTrace'}.
.PP
\fIgroup\fR
.IX Subsection "group"
.PP
Returns a list of groups to which user belongs.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
, Lemonldap::NG::Portal, Lemonldap::NG::Handler,
Plack, \s-1PSGI\s0, Lemonldap::NG::Common::PSGI::Router,
Lemonldap::NG::Common::PSGI::Request, HTML::Template,
.SH "AUTHORS"
.IX Header "AUTHORS"
.IP "Clement Oudot, " 4
.IX Item "Clement Oudot, "
.PD 0
.IP "François\-Xavier Deltombe, " 4
.IX Item "François-Xavier Deltombe, "
.IP "Xavier Guimard, " 4
.IX Item "Xavier Guimard, "
.IP "Thomas Chemineau, " 4
.IX Item "Thomas Chemineau, "
.PD
.SH "BUG REPORT"
.IX Header "BUG REPORT"
Use \s-1OW2\s0 system to report bug or ask for features:
.SH "DOWNLOAD"
.IX Header "DOWNLOAD"
Lemonldap::NG is available at
.SH "COPYRIGHT AND LICENSE"
.IX Header "COPYRIGHT AND LICENSE"
.IP "Copyright (C) 2015\-2016 by Xavier Guimard, " 4
.IX Item "Copyright (C) 2015-2016 by Xavier Guimard, "
.PD 0
.IP "Copyright (C) 2015\-2016 by Clément Oudot, " 4
.IX Item "Copyright (C) 2015-2016 by Clément Oudot, "
.PD
.PP
This library is free software; you can redistribute it and/or modify
it under the terms of the \s-1GNU\s0 General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
.PP
This program is distributed in the hope that it will be useful,
but \s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of
\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE. \s0 See the
\&\s-1GNU\s0 General Public License for more details.
.PP
You should have received a copy of the \s-1GNU\s0 General Public License
along with this program. If not, see .