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 d2565a1f0..6d523e2dd 100644 --- a/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/RESTServer.pm +++ b/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/RESTServer.pm @@ -451,14 +451,14 @@ sub _casMetaDataNodes { my ( $self, $type, $req, @path ) = @_; my $refKey = ( $type eq 'App' ? 'casAppMetaDataOptions' : 'casSrvMetaDataOptions' ); - return $self->complexNodesRoot( $req, $refKey, "oidc${type}MetaDataNode" ) + return $self->complexNodesRoot( $req, $refKey, "cas${type}MetaDataNode" ) unless (@path); my $partner = shift @path; my $query = shift @path; unless ($query) { return $self->sendError( $req, - "Bad request: oidc${type}MetaDataNode query must ask for a key", + "Bad request: cas${type}MetaDataNode query must ask for a key", 400 ); } @@ -495,12 +495,12 @@ sub _casMetaDataNodes { sub casSrvMetaDataNodes { my ( $self, $req, @path ) = @_; - return $self->_oidcMetaDataNodes( 'Srv', $req, @path ); + return $self->_casMetaDataNodes( 'Srv', $req, @path ); } sub casAppMetaDataNodes { my ( $self, $req, @path ) = @_; - return $self->_oidcMetaDataNodes( 'App', $req, @path ); + return $self->_casMetaDataNodes( 'App', $req, @path ); } # 32 - Other special nodes diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm index 7069ecfc1..df4249b53 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm @@ -632,15 +632,14 @@ sub attributes { 'mail' => 'mail', 'uid' => 'uid' }, - 'keyMsgFail' => '__badVariableName__', - 'keyTest' => qr/^!?[a-zA-Z][a-zA-Z0-9_-]*$/, - 'msgFail' => '__badValue__', - 'test' => qr/^[a-zA-Z][a-zA-Z0-9_:\-]*$/, - 'type' => 'keyTextContainer' + 'type' => 'keyTextContainer' }, 'casAppMetaDataNodes' => { 'type' => 'casAppMetaDataNodeContainer' }, + 'casAppMetaDataOptions' => { + 'type' => 'subContainer' + }, 'casAttr' => { 'type' => 'text' }, @@ -657,11 +656,7 @@ sub attributes { 'mail' => 'mail', 'uid' => 'uid' }, - 'keyMsgFail' => '__badVariableName__', - 'keyTest' => qr/^!?[a-zA-Z][a-zA-Z0-9_-]*$/, - 'msgFail' => '__badValue__', - 'test' => qr/^[a-zA-Z][a-zA-Z0-9_:\-]*$/, - 'type' => 'keyTextContainer' + 'type' => 'keyTextContainer' }, 'casSrvMetaDataNodes' => { 'type' => 'casSrvMetaDataNodeContainer' diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm index 46ee01e64..0f5e4213e 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm @@ -2060,10 +2060,6 @@ m{^(?:ldapi://[^/]*/?|\w[\w\-\.]*(?::\d{1,5})?|ldap(?:s|\+tls)?://\w[\w\-\.]*(?: }, casSrvMetaDataExportedVars => { type => 'keyTextContainer', - keyTest => qr/^!?[a-zA-Z][a-zA-Z0-9_-]*$/, - keyMsgFail => '__badVariableName__', - test => qr/^[a-zA-Z][a-zA-Z0-9_:\-]*$/, - msgFail => '__badValue__', default => { cn => 'cn', mail => 'mail', uid => 'uid', }, documentation => 'CAS exported variables', }, @@ -2081,12 +2077,9 @@ m{^(?:ldapi://[^/]*/?|\w[\w\-\.]*(?::\d{1,5})?|ldap(?:s|\+tls)?://\w[\w\-\.]*(?: msgFail => '__badUrl__', }, + casAppMetaDataOptions => { type => 'subContainer', }, casAppMetaDataExportedVars => { type => 'keyTextContainer', - keyTest => qr/^!?[a-zA-Z][a-zA-Z0-9_-]*$/, - keyMsgFail => '__badVariableName__', - test => qr/^[a-zA-Z][a-zA-Z0-9_:\-]*$/, - msgFail => '__badValue__', default => { cn => 'cn', mail => 'mail', uid => 'uid', }, documentation => 'CAS exported variables', }, 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 74cbc22c7..d230bdab0 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Parser.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Parser.pm @@ -453,17 +453,27 @@ sub _scanNodes { $self->_scanNodes($subNodes); } } - elsif ( $target =~ - /^(?:$casSrvMetaDataNodeKeys|$casAppMetaDataNodeKeys)/o ) - { - $self->set( $optKey, [ $oldName, $key ], - $target, $leaf->{data} ); + elsif ( $target =~ /^cas(?:Srv|App)MetaDataOptions/ ) { + my $optKey = $&; + hdebug " $base sub key: $target"; + if ( $target =~ + /^(?:$casSrvMetaDataNodeKeys|$casAppMetaDataNodeKeys)/o ) + { + $self->set( $optKey, [ $oldName, $key ], + $target, $leaf->{data} ); + } + else { + push @{ $self->errors }, + { message => "Unknown CAS metadata option $target" }; + return 0; + } } else { push @{ $self->errors }, - { message => "Unknown OIDC metadata option $target" }; + { message => "Unknown CAS option $target" }; return 0; } + next; } else { push @{ $self->errors },