Skip to content
Snippets Groups Projects
account-manager-web.pl 20.78 KiB
#!/usr/bin/perl

## Copyright (c) GEANT
## This software was developed by RENATER. The research leading to these results has received funding
## from the European Community¹s Seventh Framework Programme (FP7/2007-2013) under grant agreement nº 238875 (GÉANT).

## 15/09/2014, Olivier Salaün
## Web interface for the eduGAIN Access Check Account Manager

use strict;
use warnings;
use utf8;
use lib qw(lib conf);

use CGI;
use CGI::Cookie;
use CGI::Util;
use Template;
use Template::Constants qw( :debug );

use IdPAccountManager::TestAccount;
use IdPAccountManager::SAMLMetadata;
use IdPAccountManager::ServiceProvider;

use IdPAccountManager::AuthenticationToken;

## Defining parameters format
my $urn_or_url_regex = '(http(s?):\/\/|urn:)[^\\\$\*\"\'\`\^\|\<\>\n\s]+'
  ;    ## Format de type URL HTTP ou URN
my $url_regex     = 'http(s?):\/\/[^\\\$\*\"\'\`\^\|\<\>\n\s]+';
my $email_regex   = '([\w\-\_\.\/\+\=\'\&]+|\".*\")\@[\w\-]+(\.[\w\-]+)+';
my $domains_regex = '[\w\.\-]+(,[\w\.\-]+)*';
my %format        = (
    ## URL
    #'attributeauthority' => $url_regex,
    'sp_entityid' => $urn_or_url_regex,
);

my %actions = (
    'select_sp'      => { 'title_en' => 'Select your Service Provider' },
    'account_wizard' => { 'title_en' => 'Select your Service Provider' },
    'generate_token' => { 'title_en' => 'Generate an authentication token' },
    'validate_token' => { 'title_en' => 'Complete Email Challenge' },
    'home'           => { 'title_en' => $Conf::global{'app_name'} },
);

## Gives writes for the group
umask 0002;

chdir $Conf::global{'root_manager_dir'};

my $request = new WebRequest;

if (defined $request) {
    $request->execute();
}

$request->respond();

package WebRequest;

## New web request
sub new {
    my $pkg     = shift;
    my $request = {};
    IdPAccountManager::Tools::do_log('info', "");

    my $http_query = new CGI;

    ## Input parameters