135 lines
3.8 KiB
Perl
135 lines
3.8 KiB
Perl
# Lemonldap::NG::Portal::Main::Request extends Lemonldap::NG::Common::PSGI::Request
|
|
# to add all parameters needed to manage authentication:
|
|
#
|
|
# - steps: list of methods to call
|
|
# - datas: free hash ref where plugins can store their datas
|
|
# - user infos:
|
|
# * id: Apache::Session id
|
|
# * sessionInfo: hash ref that will be stored in session DB
|
|
# * user: username given by authentication module, used by userDB module
|
|
# - query elements:
|
|
# * mustRedirect: boolean to indicate that response must be a redirection
|
|
# * urlNotBase64: boolean to indicate that url isn't Base64 encoded
|
|
# - menu elements:
|
|
# * info: info to display at login
|
|
# * menuError
|
|
# * notification: see notification plugin
|
|
# * errorType: returns positive/warning/negative depending on error (stored
|
|
# in error property)
|
|
package Lemonldap::NG::Portal::Main::Request;
|
|
|
|
# Developpers, be careful: new() is never called so default values will not be
|
|
# taken in account (see Portal::Run::handler()): set default values in init()
|
|
|
|
use strict;
|
|
use Mouse;
|
|
use Lemonldap::NG::Portal::Main::Constants ':all';
|
|
|
|
extends 'Lemonldap::NG::Common::PSGI::Request';
|
|
|
|
# List of methods to call
|
|
has steps => ( is => 'rw' );
|
|
|
|
# Datas shared between methods
|
|
has datas => ( is => 'rw' );
|
|
|
|
# Session datas when created
|
|
has id => ( is => 'rw' );
|
|
has sessionInfo => ( is => 'rw' );
|
|
has user => ( is => 'rw' );
|
|
|
|
# Response cookies (list of strings built by cookie())
|
|
has respCookies => ( is => 'rw' );
|
|
|
|
# Template to display (if not defined, login or menu)
|
|
has template => ( is => 'rw' );
|
|
|
|
# Custom template parameters
|
|
has customParameters => ( is => 'rw' );
|
|
|
|
# Boolean to indicate that response must be a redirection
|
|
has mustRedirect => ( is => 'rw' );
|
|
|
|
# Store URL for redirections
|
|
has urldc => ( is => 'rw' );
|
|
has postUrl => ( is => 'rw' );
|
|
has postFields => ( is => 'rw' );
|
|
has portalHiddenFormValues => ( is => 'rw' );
|
|
|
|
# Flag that permit to a auth module to return PE_OK without setting $user
|
|
has continue => ( is => 'rw' );
|
|
|
|
# "check logins "flag"
|
|
has checkLogins => ( is => 'rw' );
|
|
|
|
# Boolean to indicate that url isn't Base64 encoded
|
|
has urlNotBase64 => ( is => 'rw' );
|
|
|
|
# Info to display at login
|
|
has info => ( is => 'rw' );
|
|
|
|
# Menu error
|
|
has menuError => ( is => 'rw' );
|
|
|
|
# Error type
|
|
sub error_type {
|
|
my $req = shift;
|
|
my $code = shift || $req->error;
|
|
|
|
# Positive errors
|
|
return "positive"
|
|
if (
|
|
scalar(
|
|
grep { /^$code$/ } (
|
|
PE_REDIRECT, PE_DONE,
|
|
PE_OK, PE_PASSWORD_OK,
|
|
PE_MAILOK, PE_LOGOUT_OK,
|
|
PE_MAILFIRSTACCESS, PE_PASSWORDFIRSTACCESS,
|
|
PE_MAILCONFIRMOK, PE_REGISTERFIRSTACCESS,
|
|
)
|
|
)
|
|
);
|
|
|
|
# Warning errors
|
|
return "warning"
|
|
if (
|
|
scalar(
|
|
grep { /^$code$/ } (
|
|
PE_INFO, PE_SESSIONEXPIRED,
|
|
PE_FORMEMPTY, PE_FIRSTACCESS,
|
|
PE_PP_GRACE, PE_PP_EXP_WARNING,
|
|
PE_NOTIFICATION, PE_BADURL,
|
|
PE_CONFIRM, PE_MAILFORMEMPTY,
|
|
PE_MAILCONFIRMATION_ALREADY_SENT, PE_PASSWORDFORMEMPTY,
|
|
PE_CAPTCHAEMPTY, PE_REGISTERFORMEMPTY,
|
|
)
|
|
)
|
|
);
|
|
|
|
# Negative errors (default)
|
|
return "negative";
|
|
|
|
#TODO
|
|
}
|
|
|
|
sub init {
|
|
my ($self) = @_;
|
|
$self->{$_} = {} foreach (qw(datas customParameters sessionInfo));
|
|
$self->{$_} = [] foreach (qw(respCookies));
|
|
}
|
|
|
|
sub errorString {
|
|
print STDERR "TODO Request::errorString()\n";
|
|
}
|
|
|
|
sub loginInfo {
|
|
print STDERR "TODO Request::loginInfo()\n";
|
|
}
|
|
|
|
sub info {
|
|
print STDERR "TODO Request::info()\n";
|
|
}
|
|
|
|
# TODO: oldpassword
|
|
1;
|