From a44dd9b4f652f889a1df7f64b0c879d54e591191 Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Tue, 11 Apr 2017 17:05:00 +0000 Subject: [PATCH] Optimize url building (#1183) --- .../lib/Lemonldap/NG/Portal/Auth/CAS.pm | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) 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 a9514aa7d..f4372e9e5 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/CAS.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/CAS.pm @@ -3,6 +3,7 @@ package Lemonldap::NG::Portal::Auth::CAS; use strict; use Mouse; use URI::Escape; +use Lemonldap::NG::Common::FormEncode; use Lemonldap::NG::Portal::Main::Constants qw( PE_ERROR PE_OK @@ -52,14 +53,14 @@ sub extractFormInfo { # TODO: create a CAS state session # Add request state parameters if ( $req->datas->{_url} ) { - my $url_param = 'url=' . uri_escape( $req->datas->{_url} ); - $local_url .= ( $local_url =~ /\?/ ? '&' : '?' ) . $url_param; + $local_url .= ( $local_url =~ /\?/ ? '&' : '?' ) + . build_urlencoded( url => $req->datas->{_url} ); } if ( $self->conf->{authChoiceParam} and my $tmp = $req->param( $self->conf->{authChoiceParam} ) ) { - my $url_param = $self->conf->{authChoiceParam} . '=' . uri_escape($tmp); - $local_url .= ( $local_url =~ /\?/ ? '&' : '?' ) . $url_param; + $local_url .= ( $local_url =~ /\?/ ? '&' : '?' ) + . build_urlencoded( $self->conf->{authChoiceParam} => $tmp ); } # Forward hidden fields @@ -68,13 +69,8 @@ sub extractFormInfo { { $self->logger->debug("Add hidden values to CAS redirect URL\n"); - - foreach ( keys %{ $req->{portalHiddenFormValues} } ) { - $local_url .= - ( $local_url =~ /\?/ ? '&' : '?' ) - . $_ . '=' - . uri_escape( $req->{portalHiddenFormValues}->{$_} ); - } + $local_url .= ( $local_url =~ /\?/ ? '&' : '?' ) + . build_urlencoded( %{ $req->{portalHiddenFormValues} } ); } if ( $self->proxy ) {