diff --git a/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/RESTServer.pm b/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/RESTServer.pm index 761115a97..9ed252c65 100644 --- a/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/RESTServer.pm +++ b/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/RESTServer.pm @@ -628,8 +628,7 @@ sub metadatas { . $c ); } else { - $self->logger->info( - "REST request to get full configuration $c"); + $self->logger->info("REST request to get full configuration $c"); } return $self->sendJSONresponse( $req, diff --git a/lemonldap-ng-common/lib/Lemonldap/NG/Common/IPv6.pm b/lemonldap-ng-common/lib/Lemonldap/NG/Common/IPv6.pm index 5200973a0..c83de8ad4 100644 --- a/lemonldap-ng-common/lib/Lemonldap/NG/Common/IPv6.pm +++ b/lemonldap-ng-common/lib/Lemonldap/NG/Common/IPv6.pm @@ -5,7 +5,7 @@ use base 'Exporter'; @EXPORT = qw(&isIPv6 &net6 &expand6); sub isIPv6 { - my($ip) = @_; + my ($ip) = @_; return $ip =~ /^[a-z0-9:]+$/i; } diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Run.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Run.pm index 588bd362b..67f3e4c8e 100644 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Run.pm +++ b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Run.pm @@ -292,7 +292,8 @@ sub forbidden { } if ( $session->{_upgrade} ) { - return $class->goToPortal( $class->unparsed_uri, undef, '/upgradesession' ); + return $class->goToPortal( $class->unparsed_uri, undef, + '/upgradesession' ); } # Log forbidding diff --git a/lemonldap-ng-handler/t/65-Lemonldap-NG-Handler-PSGI-ServiceToken.t b/lemonldap-ng-handler/t/65-Lemonldap-NG-Handler-PSGI-ServiceToken.t index 58f3b050e..1c9d0cca5 100644 --- a/lemonldap-ng-handler/t/65-Lemonldap-NG-Handler-PSGI-ServiceToken.t +++ b/lemonldap-ng-handler/t/65-Lemonldap-NG-Handler-PSGI-ServiceToken.t @@ -15,7 +15,7 @@ my $token = $crypt->encrypt( join ':', time, $sessionId, 'test1.example.com' ); ok( $res = $client->_get( '/', undef, 'test1.example.com', undef, - VHOSTTYPE => 'ServiceToken', + VHOSTTYPE => 'ServiceToken', 'HTTP_X_LLNG_TOKEN' => $token, ), 'Query with token' diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build.pm index 259678bfb..83f679795 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build.pm @@ -495,6 +495,7 @@ sub scanTree { push @sessionTypes, $1 if ( $leaf =~ /^(.*)(?{$leaf} or die("Missing attribute $leaf"); + #print STDERR "| $attr->{documentation} | $leaf |\n"; $jleaf = { id => "$prefix$leaf", title => $leaf }; unless ( $attr->{type} ) { diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Zero.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Zero.pm index 74cfe5b12..968d9f3ce 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Zero.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Zero.pm @@ -155,7 +155,7 @@ sub zeroConf { '^/logout' => 'logout_sso' }, "manager.$domain" => { - 'default' => '$uid eq "dwho" or $uid eq "rtyler"', + 'default' => '$uid eq "dwho" or $uid eq "rtyler"', '(?#Configuration)^/(manager\.html|conf/)' => '$uid eq "dwho"', '(?#Sessions)/sessions' => '$uid eq "dwho" or $uid eq "rtyler"', '(?#Notifications)/notifications' => diff --git a/lemonldap-ng-manager/t/40-sessions.t b/lemonldap-ng-manager/t/40-sessions.t index ab757b48c..f1f729f89 100644 --- a/lemonldap-ng-manager/t/40-sessions.t +++ b/lemonldap-ng-manager/t/40-sessions.t @@ -136,7 +136,8 @@ ok( $res->{count} == 1, 'One A subnet' ); ok( $res->{values}->[0]->{count} == 4, 'All sessions found' ); $res = &client->jsonResponse( '/sessions/global', 'groupBy=net4(ipAddr,2)' ); ok( $res->{count} == 3, 'Three B subnet' ); -ok( $res->{values}->[1]->{count} == 2, 'All sessions found' ) or print STDERR Dumper($res); +ok( $res->{values}->[1]->{count} == 2, 'All sessions found' ) + or print STDERR Dumper($res); count(4); $res = &client->jsonResponse( '/sessions/global', 'orderBy=net4(ipAddr)' ); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/AD.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/AD.pm index cf067ee49..9d3853629 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/AD.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/AD.pm @@ -16,6 +16,7 @@ extends 'Lemonldap::NG::Portal::Auth::LDAP'; has adPwdMaxAge => ( is => 'rw', + lazy => 1, builder => sub { my $conf = $_[0]->{conf}; my $res = $conf->{ADPwdMaxAge} || 0; @@ -25,6 +26,7 @@ has adPwdMaxAge => ( has adPwdExpireWarning => ( is => 'rw', + lazy => 1, builder => sub { my $conf = $_[0]->{conf}; my $res = $conf->{ADPwdExpireWarning} || 0; diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/CAS.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/CAS.pm index 1c49dbbcf..fea905fa0 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/CAS.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/CAS.pm @@ -19,6 +19,7 @@ extends 'Lemonldap::NG::Portal::Auth::Base', 'Lemonldap::NG::Portal::Lib::CAS'; # Act as a proxy if proxied services configured has proxy => ( is => 'rw', + lazy => 1, builder => sub { return ref( $_[0]->conf->{CAS_proxiedServices} ) eq 'HASH' diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Combination.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Combination.pm index b6271a220..41b8ddeb8 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Combination.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Combination.pm @@ -17,6 +17,7 @@ has stackSub => ( is => 'rw' ); has wrapUserLogger => ( is => 'rw', + lazy => 1, default => sub { Lemonldap::NG::Portal::Lib::Combination::UserLogger->new( $_[0]->{userLogger} ); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/OpenID.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/OpenID.pm index 630c1fe4d..542eb6dd7 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/OpenID.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/OpenID.pm @@ -23,6 +23,7 @@ extends 'Lemonldap::NG::Portal::Auth::Base'; has secret => ( is => 'rw', + lazy => 1, default => sub { return $_[0]->conf->{openIdSecret} || $_[0]->conf->{cipher}->encrypt(0); @@ -31,6 +32,7 @@ has secret => ( has listIsWhite => ( is => 'rw', + lazy => 1, default => sub { ( $_[0]->conf->{openIdIDPList} =~ /^(\d);/ )[0] + 0; } @@ -38,6 +40,7 @@ has listIsWhite => ( has idpList => ( is => 'rw', + lazy => 1, default => sub { Lemonldap::NG::Common::Regexp::reDomainsToHost( ( $_[0]->conf->{openIdIDPList} =~ /^\d;(.*)$/ )[0] ); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/OpenIDConnect.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/OpenIDConnect.pm index 2f8b0b300..a6a52177a 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/OpenIDConnect.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/OpenIDConnect.pm @@ -302,8 +302,8 @@ sub authLogout { my $logout_url = $self->conf->{portal} . '?logout=1'; $req->urldc( $self->buildLogoutRequest( - $endsession_endpoint, - $req->{sessionInfo}->{_oidc_id_token}, $logout_url + $endsession_endpoint, $req->{sessionInfo}->{_oidc_id_token}, + $logout_url ) ); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/PAM.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/PAM.pm index afeada696..63c8c5bf6 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/PAM.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/PAM.pm @@ -17,6 +17,7 @@ our $VERSION = '2.0.0'; has service => ( is => 'rw', + lazy => 1, default => sub { return $_[0]->{conf}->{pamService} || 'login'; } diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Radius.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Radius.pm index c57ba3670..e3bb32ddc 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Radius.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Radius.pm @@ -19,6 +19,7 @@ has radius => ( is => 'rw' ); has authnLevel => ( is => 'rw', + lazy => 1, default => sub { $_[0]->conf->{radiusAuthnLevel}; } diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Twitter.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Twitter.pm index 6abbbf3ea..770a9f55c 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Twitter.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Twitter.pm @@ -11,6 +11,7 @@ our $VERSION = '2.0.0'; has twitterRequestTokenURL => ( is => 'ro', + lazy => 1, default => sub { $_[0]->conf->{twitterRequestTokenURL} || 'https://api.twitter.com/oauth/request_token'; @@ -19,6 +20,7 @@ has twitterRequestTokenURL => ( has twitterAuthorizeURL => ( is => 'ro', + lazy => 1, default => sub { $_[0]->conf->{twitterAuthorizeURL} || 'https://api.twitter.com/oauth/authorize'; @@ -27,6 +29,7 @@ has twitterAuthorizeURL => ( has twitterAccessTokenURL => ( is => 'ro', + lazy => 1, default => sub { $_[0]->conf->{twitterAccessTokenURL} || 'https://api.twitter.com/oauth/access_token'; diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/WebID.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/WebID.pm index 5fa59c45d..e646b181f 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/WebID.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/WebID.pm @@ -20,6 +20,7 @@ extends 'Lemonldap::NG::Portal::Auth::Base'; has SSLField => ( is => 'rw', + lazy => 1, default => sub { return ( $_[0]->{conf}->{SSLVar} || 'SSL_CLIENT_S_DN_Email' ); } diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/_WebForm.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/_WebForm.pm index 6d343f789..a1ed639fc 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/_WebForm.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/_WebForm.pm @@ -24,6 +24,7 @@ extends 'Lemonldap::NG::Portal::Auth::Base'; has authnLevel => ( is => 'rw', + lazy => 1, builder => sub { my $conf = $_[0]->{conf}; return ( $conf->{portal} =~ /^https/ ? 2 : 1 ); @@ -109,7 +110,9 @@ sub extractFormInfo { $self->logger->debug("Captcha code verified"); } elsif ( $self->ott ) { - unless ( $req->datas->{tokenVerified} or $self->ott->getToken($token) ) { + unless ( $req->datas->{tokenVerified} + or $self->ott->getToken($token) ) + { $self->ott->setToken($req); $self->userLogger->warn('Token expired'); return PE_TOKENEXPIRED; @@ -150,7 +153,8 @@ sub getDisplayType { } sub setSecurity { - my($self,$req) = @_; + my ( $self, $req ) = @_; + # If captcha is enable, prepare it if ( $self->captcha ) { $self->captcha->setCaptcha($req); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/OpenID.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/OpenID.pm index f33a11eb9..ed55d0e14 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/OpenID.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/OpenID.pm @@ -23,6 +23,7 @@ extends 'Lemonldap::NG::Portal::Main::Issuer'; has secret => ( is => 'rw', + lazy => 1, default => sub { return $_[0]->conf->{openIdIssuerSecret} || $_[0]->conf->{cipher}->encrypt(0); @@ -31,6 +32,7 @@ has secret => ( has listIsWhite => ( is => 'rw', + lazy => 1, default => sub { ( $_[0]->conf->{openIdSPList} =~ /^(\d);/ )[0] + 0; } @@ -38,6 +40,7 @@ has listIsWhite => ( has spList => ( is => 'rw', + lazy => 1, default => sub { Lemonldap::NG::Common::Regexp::reDomainsToHost( ( $_[0]->conf->{openIdSPList} =~ /^\d;(.*)$/ )[0] ); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/OpenIDConnect.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/OpenIDConnect.pm index 3582d6649..e295912c0 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/OpenIDConnect.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/OpenIDConnect.pm @@ -28,6 +28,7 @@ sub beforeAuth { 'exportRequestParameters' } has configStorage => ( is => 'ro', + lazy => 1, default => sub { $_[0]->{p}->HANDLER->localConfig->{configStorage}; } @@ -114,7 +115,9 @@ sub run { $oidc_request->{$param} = $req->param($param); $self->logger->debug( "OIDC request parameter $param: " . $oidc_request->{$param} ); - $self->p->setHiddenFormValue( $req, $param, $oidc_request->{$param}, '', 0 ); + $self->p->setHiddenFormValue( $req, $param, + $oidc_request->{$param}, + '', 0 ); } } @@ -840,7 +843,9 @@ qq'

The application $display_name would li $req->urldc($response_url); return PE_REDIRECT; } - return $req->param('confirm') == 1 ? ($err ? $err : PE_LOGOUT_OK ) : PE_OK; + return $req->param('confirm') == 1 + ? ( $err ? $err : PE_LOGOUT_OK ) + : PE_OK; } $req->info( diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/Captcha.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/Captcha.pm index 81184db29..8fcf8c0e7 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/Captcha.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/Captcha.pm @@ -9,21 +9,46 @@ our $VERSION = '2.0.0'; extends 'Lemonldap::NG::Common::Module'; -has width => - ( is => 'rw', default => sub { $_[0]->{conf}->{captchaWidth} || 220 } ); -has height => - ( is => 'rw', default => sub { $_[0]->{conf}->{captchaHeight} || 40 } ); -has lines => - ( is => 'rw', default => sub { $_[0]->{conf}->{captchaLines} || 5 } ); -has scramble => - ( is => 'rw', default => sub { $_[0]->{conf}->{captchaScramble} || 1 } ); -has fgColor => - ( is => 'rw', default => sub { $_[0]->{conf}->{captchaFg} || '#403030' } ); -has bgColor => - ( is => 'rw', default => sub { $_[0]->{conf}->{captchaBg} || '#FF644B' } ); -has rndmax => - ( is => 'rw', default => sub { $_[0]->{conf}->{captcha_size} || 6 } ); -has timeout => ( is => 'rw', default => sub { $_[0]->{conf}->{formTimeout} } ); +has width => ( + is => 'rw', + lazy => 1, + default => sub { $_[0]->{conf}->{captchaWidth} || 220 } +); +has height => ( + is => 'rw', + lazy => 1, + default => sub { $_[0]->{conf}->{captchaHeight} || 40 } +); +has lines => ( + is => 'rw', + lazy => 1, + default => sub { $_[0]->{conf}->{captchaLines} || 5 } +); +has scramble => ( + is => 'rw', + lazy => 1, + default => sub { $_[0]->{conf}->{captchaScramble} || 1 } +); +has fgColor => ( + is => 'rw', + lazy => 1, + default => sub { $_[0]->{conf}->{captchaFg} || '#403030' } +); +has bgColor => ( + is => 'rw', + lazy => 1, + default => sub { $_[0]->{conf}->{captchaBg} || '#FF644B' } +); +has rndmax => ( + is => 'rw', + lazy => 1, + default => sub { $_[0]->{conf}->{captcha_size} || 6 } +); +has timeout => ( + is => 'rw', + lazy => 1, + default => sub { $_[0]->{conf}->{formTimeout} } +); has ott => ( is => 'rw', diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/OneTimeToken.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/OneTimeToken.pm index 607587f21..156a1abe7 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/OneTimeToken.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/OneTimeToken.pm @@ -10,6 +10,7 @@ extends 'Lemonldap::NG::Common::Module'; has timeout => ( is => 'rw', + lazy => 1, default => sub { $_[0]->{conf}->{timeout}; } @@ -17,6 +18,7 @@ has timeout => ( has cache => ( is => 'rw', + lazy => 1, default => sub { my $c = $_[0]->{conf}; if ( !$c->{tokenUseGlobalStorage} ) { diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/OtherSessions.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/OtherSessions.pm index f57aaabda..00b46991a 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/OtherSessions.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/OtherSessions.pm @@ -10,6 +10,7 @@ has module => has moduleOpts => ( is => 'rw', + lazy => 1, default => sub { my %opts = %{ $_[0]->{conf}->{globalStorageOptions} || {} }; $opts{backend} = $_[0]->{conf}->{globalStorage}; diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/REST.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/REST.pm index d7f381173..48d8cbd4c 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/REST.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/REST.pm @@ -9,6 +9,7 @@ our $VERSION = '2.0.0'; has ua => ( is => 'rw', + lazy => 1, default => sub { return Lemonldap::NG::Common::UserAgent->new( $_[0]->{conf} ); } diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/SMTP.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/SMTP.pm index 363e94dfd..ea3f6d03a 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/SMTP.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/SMTP.pm @@ -29,10 +29,12 @@ has random => ( ); has charset => ( is => 'rw', + lazy => 1, default => sub { return $_[0]->{conf}->{mailCharset} || 'utf-8' } ); has transport => ( is => 'rw', + lazy => 1, default => sub { return $transport if $transport; my $conf = $_[0]->{conf}; diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm index 6e068b105..634a7a07c 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm @@ -140,7 +140,7 @@ sub display { } elsif ( $req->error == PE_RENEWSESSION ) { - $skinfile = 'upgradesession'; + $skinfile = 'upgradesession'; %templateParams = ( MSG => 'askToRenew', CONFIRMKEY => $self->stamp, @@ -150,7 +150,10 @@ sub display { } # 2.3 Case : user authenticated but an error was returned (bas url,...) - elsif ( not $req->datas->{noerror} and $req->userData and %{ $req->userData } ) { + elsif ( not $req->datas->{noerror} + and $req->userData + and %{ $req->userData } ) + { $skinfile = 'error'; %templateParams = ( AUTH_ERROR => $req->error, diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Issuer.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Issuer.pm index ded30d784..3982b20f5 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Issuer.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Issuer.pm @@ -28,6 +28,7 @@ has path => ( is => 'rw' ); has _ott => ( is => 'rw', + lazy => 1, default => sub { my $ott = $_[0]->{p}->loadModule('::Lib::OneTimeToken'); $ott->timeout( $_[0]->{conf}->{formTimeout} ); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Menu.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Menu.pm index 27515c37a..25778c343 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Menu.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Menu.pm @@ -15,6 +15,7 @@ extends 'Lemonldap::NG::Common::Module'; has menuModules => ( is => 'rw', + lazy => 1, builder => sub { my $conf = $_[0]->{conf}->{menuModule}; my @res; @@ -31,6 +32,7 @@ has menuModules => ( has imgPath => ( is => 'rw', + lazy => 1, builder => sub { return $_[0]->{conf}->{impgPath} || $_[0]->{conf}->{staticPrefix} . '/logos'; diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Process.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Process.pm index 87ded802c..d806e33c0 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Process.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Process.pm @@ -74,10 +74,12 @@ sub controlUrl { } } $req->{datas}->{_url} ||= ''; - my ($url, $issuerUrl); - if ( ($url = $req->param('url')) or ($issuerUrl = $req->param('issuerUrldc')) ) { + my ( $url, $issuerUrl ); + if ( ( $url = $req->param('url') ) + or ( $issuerUrl = $req->param('issuerUrldc') ) ) + { - if($issuerUrl) { + if ($issuerUrl) { $req->urlNotBase64(1); $url = $issuerUrl; } diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/SecondFactor.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/SecondFactor.pm index 7e2c2f9fa..ce133ba30 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/SecondFactor.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/SecondFactor.pm @@ -58,7 +58,7 @@ sub _run { $req->id(0); $self->p->rebuildCookies($req); my $res = $self->run( $req, $token ); - delete $req->{authResult} if($res); + delete $req->{authResult} if ($res); return $res; } diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/External2F.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/External2F.pm index 68c6ce64f..59ed157bb 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/External2F.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/External2F.pm @@ -73,7 +73,7 @@ sub verify { . $session->{ $self->conf->{whatToTrace} } ); return PE_BADCREDENTIALS; } - PE_OK + PE_OK; } # system() is used with an array to avoid shell injection diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/MailReset.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/MailReset.pm index c3f4b0ae6..d44c1cc81 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/MailReset.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/MailReset.pm @@ -38,6 +38,7 @@ extends 'Lemonldap::NG::Portal::Main::Plugin', # Form timout token generator (used even if requireToken is not set) has ott => ( is => 'rw', + lazy => 1, default => sub { my $ott = $_[0]->{p}->loadModule('Lemonldap::NG::Portal::Lib::OneTimeToken'); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/RESTServer.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/RESTServer.pm index 2ebddc0a0..342f50ead 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/RESTServer.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/RESTServer.pm @@ -51,6 +51,7 @@ extends 'Lemonldap::NG::Portal::Main::Plugin'; has configStorage => ( is => 'ro', + lazy => 1, default => sub { $_[0]->{p}->HANDLER->localConfig->{configStorage}; } @@ -58,6 +59,7 @@ has configStorage => ( has exportedAttr => ( is => 'rw', + lazy => 1, default => sub { my $conf = $_[0]->{conf}; if ( $conf->{exportedAttr} and $conf->{exportedAttr} !~ /^\s*\+/ ) { diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Register.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Register.pm index 46267186e..25c34a5cb 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Register.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Register.pm @@ -35,6 +35,7 @@ has registerModule => ( is => 'rw' ); # Register url to set in the mail has registerUrl => ( is => 'rw', + lazy => 1, default => sub { my $p = $_[0]->conf->{portal}; $p =~ s#/*$##; @@ -45,6 +46,7 @@ has registerUrl => ( # Mail timeout token generator has mailott => ( is => 'rw', + lazy => 1, default => sub { my $ott = $_[0]->{p}->loadModule('Lemonldap::NG::Portal::Lib::OneTimeToken'); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/SOAPServer.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/SOAPServer.pm index 33f235869..45be219af 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/SOAPServer.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/SOAPServer.pm @@ -24,6 +24,7 @@ has server => ( is => 'rw' ); has configStorage => ( is => 'ro', + lazy => 1, default => sub { $_[0]->{p}->HANDLER->localConfig->{configStorage}; } @@ -31,6 +32,7 @@ has configStorage => ( has exportedAttr => ( is => 'rw', + lazy => 1, default => sub { my $conf = $_[0]->{conf}; if ( $conf->{exportedAttr} and $conf->{exportedAttr} !~ /^\s*\+/ ) { diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/StayConnected.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/StayConnected.pm index 7f40d12c8..a5fbb64a0 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/StayConnected.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/StayConnected.pm @@ -26,6 +26,7 @@ use constant beforeLogout => 'logout'; has ott => ( is => 'rw', + lazy => 1, default => sub { my $ott = $_[0]->{p}->loadModule('Lemonldap::NG::Portal::Lib::OneTimeToken'); @@ -37,6 +38,7 @@ has ott => ( # Default timeout: 1 month has timeout => ( is => 'rw', + lazy => 1, default => sub { $_[0]->{conf}->{stayConnectedTimeout} || 2678400; } diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Upgrade.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Upgrade.pm index f3e9e777b..eb7d1a9d0 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Upgrade.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Upgrade.pm @@ -16,6 +16,7 @@ extends 'Lemonldap::NG::Portal::Main::Plugin'; has ott => ( is => 'rw', + lazy => 1, default => sub { my $ott = $_[0]->{p}->loadModule('Lemonldap::NG::Portal::Lib::OneTimeToken'); @@ -66,9 +67,9 @@ sub confirm { return $self->p->do( $req, [ sub { PE_TOKENEXPIRED } ] ); } } - $req->steps(['controlUrl']); + $req->steps( ['controlUrl'] ); my $res = $self->p->process($req); - return $self->p->do( $req, [ sub { $res } ] ) if($res); + return $self->p->do( $req, [ sub { $res } ] ) if ($res); if ( $upg or $req->param('confirm') == 1 ) { $req->datas->{noerror} = 1; $self->p->setHiddenFormValue( diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/DBI.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/DBI.pm index 369379a56..d746aa576 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/DBI.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/DBI.pm @@ -12,6 +12,7 @@ our $VERSION = '2.0.0'; has table => ( is => 'rw', + lazy => 1, builder => sub { my $conf = $_[0]->{conf}; return $conf->{dbiUserTable} || $conf->{dbiAuthTable}; @@ -20,6 +21,7 @@ has table => ( has pivot => ( is => 'rw', + lazy => 1, builder => sub { my $conf = $_[0]->{conf}; return $conf->{userPivot} || $conf->{dbiAuthLoginCol}; @@ -28,6 +30,7 @@ has pivot => ( has exportedVars => ( is => 'rw', + lazy => 1, builder => sub { my $conf = $_[0]->{conf}; return { %{ $conf->{exportedVars} }, %{ $conf->{dbiExportedVars} } }; diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/Facebook.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/Facebook.pm index 201622317..8b3d549c5 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/Facebook.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/Facebook.pm @@ -10,6 +10,7 @@ our $VERSION = '2.0.0'; has vars => ( is => 'rw', + lazy => 1, builder => sub { return { %{ $_[0]->conf->{exportedVars} }, diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/LDAP.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/LDAP.pm index 4132ad5ab..c18fc843e 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/LDAP.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/LDAP.pm @@ -11,6 +11,7 @@ our $VERSION = '2.0.0'; has ldapGroupAttributeNameSearch => ( is => 'rw', + lazy => 1, builder => sub { return $_[0]->{conf}->{ldapGroupAttributeNameSearch} ? [ @@ -30,6 +31,7 @@ has ldapGroupAttributeNameSearch => ( has attrs => ( is => 'rw', + lazy => 1, builder => sub { return [ values %{ $_[0]->{conf}->{exportedVars} }, diff --git a/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-POST-IdP-initiated.t b/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-POST-IdP-initiated.t index 9920118fd..0b44a192a 100644 --- a/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-POST-IdP-initiated.t +++ b/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-POST-IdP-initiated.t @@ -317,7 +317,8 @@ ywIDAQAB ", samlSPMetaDataXML => { "sp.com" => { - samlSPMetaDataXML => samlSPMetaDataXML('sp','HTTP-POST') + samlSPMetaDataXML => + samlSPMetaDataXML( 'sp', 'HTTP-POST' ) }, }, } @@ -364,7 +365,8 @@ sub sp { }, samlIDPMetaDataXML => { idp => { - samlIDPMetaDataXML => samlIDPMetaDataXML('idp','HTTP-POST') + samlIDPMetaDataXML => + samlIDPMetaDataXML( 'idp', 'HTTP-POST' ) } }, samlOrganizationDisplayName => "SP", diff --git a/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-POST.t b/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-POST.t index ac56669a3..43b72c7a6 100644 --- a/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-POST.t +++ b/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-POST.t @@ -334,7 +334,8 @@ ywIDAQAB ", samlSPMetaDataXML => { "sp.com" => { - samlSPMetaDataXML => samlSPMetaDataXML('sp','HTTP-POST') + samlSPMetaDataXML => + samlSPMetaDataXML( 'sp', 'HTTP-POST' ) }, }, } @@ -380,7 +381,8 @@ sub sp { }, samlIDPMetaDataXML => { idp => { - samlIDPMetaDataXML => samlIDPMetaDataXML('idp','HTTP-POST') + samlIDPMetaDataXML => + samlIDPMetaDataXML( 'idp', 'HTTP-POST' ) } }, samlOrganizationDisplayName => "SP", diff --git a/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-Redirect-IdP-initiated.t b/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-Redirect-IdP-initiated.t index 1bdcf1822..98b8ba7eb 100644 --- a/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-Redirect-IdP-initiated.t +++ b/lemonldap-ng-portal/t/30-Auth-and-issuer-SAML-Redirect-IdP-initiated.t @@ -297,7 +297,8 @@ ywIDAQAB ", samlSPMetaDataXML => { "sp.com" => { - samlSPMetaDataXML => samlSPMetaDataXML('sp','HTTP-Redirect') + samlSPMetaDataXML => + samlSPMetaDataXML( 'sp', 'HTTP-Redirect' ) }, }, } @@ -344,7 +345,8 @@ sub sp { }, samlIDPMetaDataXML => { idp => { - samlIDPMetaDataXML => samlIDPMetaDataXML('idp','HTTP-Redirect') + samlIDPMetaDataXML => + samlIDPMetaDataXML( 'idp', 'HTTP-Redirect' ) } }, samlOrganizationDisplayName => "SP", diff --git a/lemonldap-ng-portal/t/30-SAML-SP-rule.t b/lemonldap-ng-portal/t/30-SAML-SP-rule.t index 1d010eee2..5e0941d8e 100644 --- a/lemonldap-ng-portal/t/30-SAML-SP-rule.t +++ b/lemonldap-ng-portal/t/30-SAML-SP-rule.t @@ -108,7 +108,7 @@ SKIP: { ); expectOK($res); my $idpId = expectCookie($res); - ok($res->[2]->[0] =~ /trmsg="84"/, 'Reject reason is 84'); + ok( $res->[2]->[0] =~ /trmsg="84"/, 'Reject reason is 84' ); } count($maintests); @@ -150,7 +150,7 @@ sub issuer { samlSPMetaDataOptionsSignSLOMessage => 1, samlSPMetaDataOptionsCheckSSOMessageSignature => 1, samlSPMetaDataOptionsCheckSLOMessageSignature => 1, - samlSPMetaDataOptionsRule => '$uid eq "dwho"', + samlSPMetaDataOptionsRule => '$uid eq "dwho"', } }, samlSPMetaDataExportedAttributes => { diff --git a/lemonldap-ng-portal/t/32-Auth-and-issuer-OIDC-authorization_code.t b/lemonldap-ng-portal/t/32-Auth-and-issuer-OIDC-authorization_code.t index 2087808eb..4fe22d65f 100644 --- a/lemonldap-ng-portal/t/32-Auth-and-issuer-OIDC-authorization_code.t +++ b/lemonldap-ng-portal/t/32-Auth-and-issuer-OIDC-authorization_code.t @@ -72,6 +72,7 @@ ok( count(1); ($query) = expectRedirection( $res, qr#^http://auth.rp.com/?\?(.*)$# ); + # Push OP response to RP switch ('rp'); diff --git a/lemonldap-ng-portal/t/32-OIDC-RP-rule.t b/lemonldap-ng-portal/t/32-OIDC-RP-rule.t index bc03591d6..0774a5b1b 100644 --- a/lemonldap-ng-portal/t/32-OIDC-RP-rule.t +++ b/lemonldap-ng-portal/t/32-OIDC-RP-rule.t @@ -56,7 +56,7 @@ ok( ); count(1); my $idpId = expectCookie($res); -ok($res->[2]->[0] =~ /trmsg="84"/, 'Reject reason is 84'); +ok( $res->[2]->[0] =~ /trmsg="84"/, 'Reject reason is 84' ); count(1); #print STDERR Dumper($res); @@ -171,7 +171,7 @@ sub op { oidcRPMetaDataOptionsClientSecret => "rpsecret", oidcRPMetaDataOptionsUserIDAttr => "", oidcRPMetaDataOptionsAccessTokenExpiration => 3600, - oidcRPMetaDataOptionsRule => '$uid eq "dwho"', + oidcRPMetaDataOptionsRule => '$uid eq "dwho"', } }, oidcOPMetaDataOptions => {}, diff --git a/lemonldap-ng-portal/t/40-Notifications-XML-File.t b/lemonldap-ng-portal/t/40-Notifications-XML-File.t index 8078bf4f4..a962b4d9e 100644 --- a/lemonldap-ng-portal/t/40-Notifications-XML-File.t +++ b/lemonldap-ng-portal/t/40-Notifications-XML-File.t @@ -5,7 +5,7 @@ use IO::String; require 't/test-lib.pm'; my $res; -my $file = 't/20160530_dwho_dGVzdHJlZg==.xml'; +my $file = 't/20160530_dwho_dGVzdHJlZg==.xml'; my $mainTests = 6; SKIP: { diff --git a/lemonldap-ng-portal/t/42-Register-Demo-with-token.t b/lemonldap-ng-portal/t/42-Register-Demo-with-token.t index f8c71e0ee..d03fd2a3f 100644 --- a/lemonldap-ng-portal/t/42-Register-Demo-with-token.t +++ b/lemonldap-ng-portal/t/42-Register-Demo-with-token.t @@ -50,7 +50,9 @@ ok( count(1); expectOK($res); -ok( mail() =~ m#a href="http://auth.example.com/register\?(.*?)"#, 'Found register token') or print STDERR Dumper($main::mail); +ok( mail() =~ m#a href="http://auth.example.com/register\?(.*?)"#, + 'Found register token' ) + or print STDERR Dumper($main::mail); $query = $1; ok( $query =~ /register_token=/, 'Found register_token' ); count(2); @@ -62,9 +64,13 @@ ok( expectOK($res); count(1); -ok( mail() =~ m#Your login is.+?(\w+).*?Your password is.+?(.*?)#s, 'Found user and password'); +ok( + mail() =~ + m#Your login is.+?(\w+).*?Your password is.+?(.*?)#s, + 'Found user and password' +); $user = $1; -$pwd = $2; +$pwd = $2; ok( $user eq 'fbar', 'Get good login' ); count(2);