Skip to content
Snippets Groups Projects
WebRequest.pm 20.94 KiB
package IdPAccountManager::WebRequest;

use strict;
use warnings;

use English qw(-no_match_vars);
use IdPAccountManager::Logger;
use IdPAccountManager::Data::TestAccount;
use IdPAccountManager::Data::AuthenticationToken;
use IdPAccountManager::Data::ServiceProvider;

## New web request
sub new {
    my ($pkg, %args) = @_;

    my $self = {
        format        => $args{format},
        actions       => $args{actions},
        configuration => $args{configuration},
    };

    $self->{logger} = IdPAccountManager::Logger->new(
        file      => $self->{configuration}->{log_file},
        verbosity => $self->{configuration}->{log_level}
    );
    $self->{logger}->log(
        level   => LOG_INFO,
        message => ''
    );

    IdPAccountManager::DB->register_db(
        driver          => $self->{configuration}->{database_type},
        database        => $self->{configuration}->{database_name},
        host            => $self->{configuration}->{database_host},
        password        => $self->{configuration}->{database_password},
        username        => $self->{configuration}->{database_user}
    );

    $self->{db} = IdPAccountManager::DB->new();

    my $http_query = CGI->new();

    ## Input parameters
    my %in_vars = $http_query->Vars;
    $self->{param_in} = \%in_vars;

    ## Check if admin acts as another user
    $self->{cookies} = CGI::Cookie->fetch;

#if (defined $self->{cookies}->{as_user} && $request->{is_admin}) {
#    $self->{utilisateur} =  $request->{as_user} = $request->{cookies}->{as_user}->value;
#    $self->{is_admin} = 0;
#}

    ## Usefull data for output (web pages or mail notices)
    $self->{param_out}->{url_cgi} = $ENV{SCRIPT_NAME};
    $self->{param_out}->{env}     = \%ENV;
    $self->{param_out}->{actions} = $args{actions};
    $self->{param_out}->{conf}    = $self->{configuration};

    ## Clean input vars
    foreach my $key (keys %{ $self->{param_in} }) {

        ## Removing all ^M (0D)
        $self->{param_in}->{$key} =~ s/\r//g;

        $self->{param_in}->{$key} =~ s/\s+$//;    ## Remove trailing spaces
        $self->{param_in}->{$key} =~ s/^\s+//;    ## Remove leading spaces

        ## If action_xx param is set, then action=xx