Request.pm 3.39 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
54
55
# Store URL for redirections
has urldc => ( is => 'rw' );

Yadd's avatar
Yadd committed
56
57
58
# "check logins "flag"
has checkLogins => ( is => 'rw' );

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

Yadd's avatar
Yadd committed
62
63
64
65
66
67
68
69
# 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
70
71
72
73
74
75
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
    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
105
106
107
108

    #TODO
}

Yadd's avatar
Yadd committed
109
110
sub init {
    my ($self) = @_;
Yadd's avatar
Yadd committed
111
    $self->{$_} = {} foreach(qw(datas customParameters sessionInfo));;
Yadd's avatar
Yadd committed
112
113
114
    $self->{$_} = [] foreach(qw(respCookies));;
}

Yadd's avatar
Yadd committed
115
116
117
118
119
120
121
122
123
sub errorString {

    #TODO
}

sub loginInfo {
}

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