Request.pm 3.79 KB
Newer Older
Yadd's avatar
Yadd committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# 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)
Yadd's avatar
Yadd committed
19 20
package Lemonldap::NG::Portal::Main::Request;

Yadd's avatar
Yadd committed
21
# Developpers, be careful: new() is never called so default values will not be
Yadd's avatar
Yadd committed
22
# taken in account (see Portal::Run::handler()): set default values in init()
Yadd's avatar
Yadd committed
23

Yadd's avatar
Yadd committed
24 25
use strict;
use Mouse;
Yadd's avatar
Yadd committed
26
use Lemonldap::NG::Portal::Main::Constants ':all';
Yadd's avatar
Yadd committed
27 28 29

extends 'Lemonldap::NG::Common::PSGI::Request';

Yadd's avatar
Yadd committed
30
# List of methods to call
Yadd's avatar
Yadd committed
31
has steps => ( is => 'rw' );
Yadd's avatar
Yadd committed
32 33

# Datas shared between methods
Yadd's avatar
Yadd committed
34
has datas => ( is => 'rw' );
Yadd's avatar
Yadd committed
35 36

# Session datas when created
Yadd's avatar
Yadd committed
37
has id          => ( is => 'rw' );
Yadd's avatar
Yadd committed
38
has sessionInfo => ( is => 'rw' );
Yadd's avatar
Yadd committed
39
has user        => ( is => 'rw' );
Yadd's avatar
Yadd committed
40 41

# Response cookies (list of strings built by cookie())
Yadd's avatar
Yadd committed
42
has respCookies => ( is => 'rw' );
Yadd's avatar
Yadd committed
43

Yadd's avatar
Yadd committed
44
# Template to display (if not defined, login or menu)
Yadd's avatar
Yadd committed
45 46
has template => ( is => 'rw' );

Yadd's avatar
Yadd committed
47
# Custom template parameters
Yadd's avatar
Yadd committed
48
has customParameters => ( is => 'rw' );
Yadd's avatar
Yadd committed
49

Yadd's avatar
Yadd committed
50 51 52
# Boolean to indicate that response must be a redirection
has mustRedirect => ( is => 'rw' );

Yadd's avatar
Yadd committed
53
# Store URL for redirections
Yadd's avatar
Yadd committed
54 55 56 57 58 59 60
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' );
Yadd's avatar
Yadd committed
61

Yadd's avatar
Yadd committed
62 63 64
# "check logins "flag"
has checkLogins => ( is => 'rw' );

Yadd's avatar
Yadd committed
65 66
# Boolean to indicate that url isn't Base64 encoded
has urlNotBase64 => ( is => 'rw' );
Yadd's avatar
Yadd committed
67

Yadd's avatar
Yadd committed
68 69 70 71 72 73 74 75
# Info to display at login
has info => ( is => 'rw' );

# Menu error
has menuError => ( is => 'rw' );

# Error type
sub error_type {
Yadd's avatar
Yadd committed
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
    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";
Yadd's avatar
Yadd committed
111 112 113 114

    #TODO
}

Yadd's avatar
Yadd committed
115 116
sub init {
    my ($self) = @_;
Yadd's avatar
Yadd committed
117 118
    $self->{$_} = {} foreach (qw(datas customParameters sessionInfo));
    $self->{$_} = [] foreach (qw(respCookies));
Yadd's avatar
Yadd committed
119 120
}

Yadd's avatar
Yadd committed
121
sub errorString {
Yadd's avatar
Yadd committed
122
    print STDERR "TODO Request::errorString()\n";
Yadd's avatar
Yadd committed
123 124 125
}

sub loginInfo {
Yadd's avatar
Yadd committed
126 127 128 129 130
    print STDERR "TODO Request::loginInfo()\n";
}

sub info {
    print STDERR "TODO Request::info()\n";
Yadd's avatar
Yadd committed
131 132 133
}

# TODO: oldpassword
Yadd's avatar
Yadd committed
134
1;