Request.pm 3.23 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 22 23
# Developpers, be careful: new() is never called so default values will not be
# taken in account (see Portal::Run::handler())

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', default => sub { {} } );
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 47 48 49
has template => ( is => 'rw' );

# Boolean to indicate that response must be a redirection
has mustRedirect => ( is => 'rw' );

Yadd's avatar
Yadd committed
50 51 52
# Store URL for redirections
has urldc => ( is => 'rw' );

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

Yadd's avatar
Yadd committed
56 57 58 59 60 61 62 63 64 65 66 67 68 69
# Info to display at login
has info => ( is => 'rw' );

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

# Notification
has notification => ( is => 'rw' );

has _authChoice   => ( is => 'rw' );
has _openidPortal => ( 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 109 110 111 112 113 114 115 116 117

    #TODO
}

sub errorString {

    #TODO
}

sub loginInfo {
}

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