Compare commits
No commits in common. "6258856478bd6aff038e229523e68f465b7d8946" and "7084e18a1149dfdca3aa114b9a9e062b92b1356a" have entirely different histories.
6258856478
...
7084e18a11
|
@ -1,2 +0,0 @@
|
||||||
creolefuncs_DATA_DIR := $(DESTDIR)/usr/share/creole/funcs
|
|
||||||
lemonldap-ng_DATA_DIR := $(eole_DIR)/lemonldap-ng
|
|
|
@ -0,0 +1 @@
|
||||||
|
creolefuncs_DATA_DIR := $(DESTDIR)/usr/share/creole/funcs
|
|
@ -1,102 +0,0 @@
|
||||||
package Lemonldap::NG::Portal::UserDB::LDAP;
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Mouse;
|
|
||||||
use utf8;
|
|
||||||
use Lemonldap::NG::Portal::Main::Constants qw(PE_OK);
|
|
||||||
|
|
||||||
extends 'Lemonldap::NG::Portal::Lib::LDAP';
|
|
||||||
|
|
||||||
our $VERSION = '2.0.6';
|
|
||||||
|
|
||||||
has ldapGroupAttributeNameSearch => (
|
|
||||||
is => 'rw',
|
|
||||||
lazy => 1,
|
|
||||||
builder => sub {
|
|
||||||
my $attributes = [];
|
|
||||||
@$attributes =
|
|
||||||
split( /\s+/, $_[0]->{conf}->{ldapGroupAttributeNameSearch} )
|
|
||||||
if $_[0]->{conf}->{ldapGroupAttributeNameSearch};
|
|
||||||
push( @$attributes, $_[0]->{conf}->{ldapGroupAttributeNameGroup} )
|
|
||||||
if ( $_[0]->{conf}->{ldapGroupRecursive}
|
|
||||||
and $_[0]->{conf}->{ldapGroupAttributeNameGroup} ne "dn" );
|
|
||||||
return $attributes;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
# RUNNING METHODS
|
|
||||||
#
|
|
||||||
# getUser is provided by Portal::Lib::LDAP
|
|
||||||
|
|
||||||
# Load all parameters included in exportedVars parameter.
|
|
||||||
# Multi-value parameters are loaded in a single string with
|
|
||||||
# a separator (param multiValuesSeparator)
|
|
||||||
# @return Lemonldap::NG::Portal constant
|
|
||||||
sub setSessionInfo {
|
|
||||||
my ( $self, $req ) = @_;
|
|
||||||
$req->{sessionInfo}->{_dn} = $req->data->{dn};
|
|
||||||
|
|
||||||
my %vars = ( %{ $self->conf->{exportedVars} },
|
|
||||||
%{ $self->conf->{ldapExportedVars} } );
|
|
||||||
while ( my ( $k, $v ) = each %vars ) {
|
|
||||||
|
|
||||||
# getLdapValue returns an empty string for missing attribute
|
|
||||||
# but we really want to return undef so they don't get stored in session
|
|
||||||
$req->sessionInfo->{$k} =
|
|
||||||
$self->ldap->getLdapValue( $req->data->{ldapentry}, $v ) || undef;
|
|
||||||
}
|
|
||||||
|
|
||||||
PE_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Load all groups in $groups.
|
|
||||||
# @return Lemonldap::NG::Portal constant
|
|
||||||
sub setGroups {
|
|
||||||
my ( $self, $req ) = @_;
|
|
||||||
my $groups = $req->{sessionInfo}->{groups};
|
|
||||||
my $hGroups = $req->{sessionInfo}->{hGroups};
|
|
||||||
|
|
||||||
if ( $self->conf->{ldapGroupBase} ) {
|
|
||||||
|
|
||||||
# Get value for group search
|
|
||||||
my $group_value = $self->ldap->getLdapValue( $req->data->{ldapentry},
|
|
||||||
$self->conf->{ldapGroupAttributeNameUser} );
|
|
||||||
|
|
||||||
if ( $self->conf->{ldapGroupDecodeSearchedValue} ) {
|
|
||||||
utf8::decode($group_value);
|
|
||||||
}
|
|
||||||
|
|
||||||
$self->logger->debug( "Searching LDAP groups in "
|
|
||||||
. $self->conf->{ldapGroupBase}
|
|
||||||
. " for $group_value" );
|
|
||||||
|
|
||||||
# Call searchGroups
|
|
||||||
my $ldapGroups = $self->ldap->searchGroups(
|
|
||||||
$self->conf->{ldapGroupBase},
|
|
||||||
$self->conf->{ldapGroupAttributeName},
|
|
||||||
$group_value,
|
|
||||||
$self->ldapGroupAttributeNameSearch,
|
|
||||||
$req->{ldapGroupDuplicateCheck}
|
|
||||||
);
|
|
||||||
|
|
||||||
foreach ( keys %$ldapGroups ) {
|
|
||||||
my $groupName = $_;
|
|
||||||
$hGroups->{$groupName} = $ldapGroups->{$groupName};
|
|
||||||
my $groupValues = [];
|
|
||||||
foreach ( @{ $self->ldapGroupAttributeNameSearch } ) {
|
|
||||||
next if $_ =~ /^name$/;
|
|
||||||
my $firstValue = $ldapGroups->{$groupName}->{$_}->[0];
|
|
||||||
push @$groupValues, $firstValue;
|
|
||||||
}
|
|
||||||
$groups .= $self->conf->{multiValuesSeparator} if $groups;
|
|
||||||
$groups .= join( '|', @$groupValues );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$req->{sessionInfo}->{groups} = $groups;
|
|
||||||
$req->{sessionInfo}->{hGroups} = $hGroups;
|
|
||||||
PE_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
|
|
@ -1,20 +0,0 @@
|
||||||
--- /usr/share/perl5/Lemonldap/NG/Portal/UserDB/LDAP.pm.old 2019-12-11 12:05:54.000000000 +0100
|
|
||||||
+++ /usr/share/perl5/Lemonldap/NG/Portal/UserDB/LDAP.pm 2021-01-05 10:54:19.188732119 +0100
|
|
||||||
@@ -40,10 +40,15 @@
|
|
||||||
%{ $self->conf->{ldapExportedVars} } );
|
|
||||||
while ( my ( $k, $v ) = each %vars ) {
|
|
||||||
|
|
||||||
+ my $value = $self->ldap->getLdapValue( $req->data->{ldapentry}, $v );
|
|
||||||
+
|
|
||||||
# getLdapValue returns an empty string for missing attribute
|
|
||||||
# but we really want to return undef so they don't get stored in session
|
|
||||||
- $req->sessionInfo->{$k} =
|
|
||||||
- $self->ldap->getLdapValue( $req->data->{ldapentry}, $v ) || undef;
|
|
||||||
+ # This has to be a string comparison because "0" is a valid attribute
|
|
||||||
+ # value. See #2403
|
|
||||||
+ $value = undef if ( $value eq "" );
|
|
||||||
+
|
|
||||||
+ $req->sessionInfo->{$k} = $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
PE_OK;
|
|
|
@ -1,12 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# vérifie si le patch est déjà appliqué
|
|
||||||
grep -q 2403 /usr/share/perl5/Lemonldap/NG/Portal/UserDB/LDAP.pm && exit 0
|
|
||||||
|
|
||||||
# copie de sauvegarde
|
|
||||||
cp -a /usr/share/perl5/Lemonldap/NG/Portal/UserDB/LDAP.pm /usr/share/eole/lemonldap-ng/
|
|
||||||
|
|
||||||
# application du patch
|
|
||||||
patch -d / -p 0 < /usr/share/eole/lemonldap-ng/LDAP.pm.patch
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -2,11 +2,9 @@
|
||||||
%set %%ssoFilters = %%getSSOFilters
|
%set %%ssoFilters = %%getSSOFilters
|
||||||
%set %%exported_vars = ['"UA": "HTTP_USER_AGENT"']
|
%set %%exported_vars = ['"UA": "HTTP_USER_AGENT"']
|
||||||
%set %%cas_attributes = []
|
%set %%cas_attributes = []
|
||||||
%set %%ldap_attributes = ['"uid": "uid"', '"mail": "mail"','"cn":"cn"']
|
|
||||||
%for %%attr in %%casAttribute
|
%for %%attr in %%casAttribute
|
||||||
%silent %%exported_vars.append('"' + %%attr + '": "' + %%attr.casLDAPAttribute + '"')
|
%silent %%exported_vars.append('"' + %%attr + '": "' + %%attr + '.casLDAPAttribute"')
|
||||||
%silent %%cas_attributes.append('"' + %%attr + '": "' + %%attr.casLDAPAttribute + '"')
|
%silent %%cas_attributes.append('"' + %%attr + '": "' + %%attr + '.casLDAPAttribute"')
|
||||||
%silent %%ldap_attributes.append('"' + %%attr + '": "' + %%attr.casLDAPAttribute + '"')
|
|
||||||
%end for
|
%end for
|
||||||
%for %%key, %%value in %%ssoFilters
|
%for %%key, %%value in %%ssoFilters
|
||||||
%silent %%exported_vars.append('"' + %%key + '": "' + %%value + '"')
|
%silent %%exported_vars.append('"' + %%key + '": "' + %%value + '"')
|
||||||
|
@ -175,7 +173,9 @@
|
||||||
"ldapSearchDeref": "find",
|
"ldapSearchDeref": "find",
|
||||||
"ldapBase": "%%ldapUserBaseDN",
|
"ldapBase": "%%ldapUserBaseDN",
|
||||||
"ldapExportedVars": {
|
"ldapExportedVars": {
|
||||||
%%custom_join(%%ldap_attributes, ',\n ')
|
"cn": "cn",
|
||||||
|
"mail": "mail",
|
||||||
|
"uid": "uid"
|
||||||
},
|
},
|
||||||
"ldapGroupAttributeName": "memberUid",
|
"ldapGroupAttributeName": "memberUid",
|
||||||
"ldapGroupAttributeNameGroup": "dn",
|
"ldapGroupAttributeNameGroup": "dn",
|
||||||
|
|
Loading…
Reference in New Issue