From b394ba2523333720f68dba58692d78b05f196c1a Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Tue, 17 May 2016 20:06:49 +0000 Subject: [PATCH] Import r5060 (#1016) --- e2e-tests/manager/12-oidcrp-config.js | 2 +- .../lib/Lemonldap/NG/Manager/Conf.pm | 5 ++++- .../lib/Lemonldap/NG/Manager/Conf/Parser.pm | 18 +++++++++++++++++- .../lib/Lemonldap/NG/Portal/_OpenIDConnect.pm | 2 +- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/e2e-tests/manager/12-oidcrp-config.js b/e2e-tests/manager/12-oidcrp-config.js index 19b447435..50fe45e86 100644 --- a/e2e-tests/manager/12-oidcrp-config.js +++ b/e2e-tests/manager/12-oidcrp-config.js @@ -26,7 +26,7 @@ describe('Lemonldap::NG Manager', function() { element(by.id('t-oidcRPMetaDataNodes/new__rp-example/oidcRPMetaDataOptionsExtraClaims')).click(); element(by.css('.glyphicon-plus-sign')).click(); element(by.id('a-oidcRPMetaDataNodes/new__rp-example/oidcRPMetaDataOptionsExtraClaims')).click(); - element(by.id('t-oidcRPMetaDataNodes/new__rp-example/oidcRPMetaDataOptionsExtraClaims/n1')).click(); + element(by.id('t-oidcRPMetaDataNodes/new__rp-example/oidcRPMetaDataOptionsExtraClaims/n2')).click(); element(by.id('hashkeyinput')).clear().sendKeys('MyClaim'); element(by.id('hashvalueinput')).clear().sendKeys('MyAttribute'); }); diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf.pm index b2402019e..8988b4bfe 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf.pm @@ -434,7 +434,10 @@ sub _oidcMetaDataNodes { my ( $id, $resp ) = ( 1, [] ); # Return all exported attributes if asked - if ( $query =~ /^oidc${type}MetaDataExportedVars$/ ) { + if ( $query =~ + /^(?:oidc${type}MetaDataExportedVars|oidcRPMetaDataOptionsExtraClaims)$/ + ) + { my $pk = eval { $self->getConfKey( $req, $query )->{$partner} } // {}; return $self->sendError( $req, undef, 400 ) if ( $req->error ); foreach my $h ( sort keys %$pk ) { diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Parser.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Parser.pm index 9ac05fd18..86b70d734 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Parser.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Parser.pm @@ -370,7 +370,23 @@ sub _scanNodes { elsif ( $target =~ /^oidc(?:O|R)PMetaDataOptions/ ) { my $optKey = $&; hdebug " $base sub key: $target"; - if ( $target =~ + if ( $target eq 'oidcRPMetaDataOptionsExtraClaims' ) { + if ( $leaf->{cnodes} ) { + hdebug(' unopened'); + $self->newConf->{$target}->{$key} = + $self->refConf->{$target}->{$key} // {}; + } + elsif ($h) { + hdebug(' opened'); + $self->set( $target, $key, $leaf->{title}, + $leaf->{data} ); + } + else { + hdebug(" $target: looking for subnodes"); + $self->_scanNodes($subNodes); + } + } + elsif ( $target =~ /^(?:$oidcOPMetaDataNodeKeys|$oidcRPMetaDataNodeKeys)/o ) { diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/_OpenIDConnect.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/_OpenIDConnect.pm index cd8e1ea2b..6a08853ef 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/_OpenIDConnect.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/_OpenIDConnect.pm @@ -1149,7 +1149,7 @@ sub getAttributesListFromClaim { # Additional claims my $extraClaims = - $self->{oidcRPMetaDataOptions}->{$rp}->{oidcRPMetaDataOptionsExtraClaims}; + $self->{oidcRPMetaDataOptionsExtraClaims}->{$rp}; if ($extraClaims) { foreach my $claim ( keys %$extraClaims ) {