From b3311913b3b51faed300af98016c25cbd507fb44 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9rick?= Date: Wed, 19 Feb 2014 12:02:41 -0500 Subject: [PATCH] Bug 11807 : Add support for categorycode conversions when updating an user using a LDAP server. To test 1/ Apply both patches 2/ This patch lets you easily configure mappings for categorycode values. These mapping will be used when updating the user's account after a successful LDAP login. Here is an example configuration : STU ... STUDENT EMPLOYEE 3/ With this configuration, LDAP users with the usertype value "EMP" on the LDAP server should have the "EMPLOYEE" categorycode in Koha. Signed-off-by: Chris Signed-off-by: Martin Renvoize Signed-off-by: Brendan A Gallagher --- C4/Auth_with_ldap.pm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/C4/Auth_with_ldap.pm b/C4/Auth_with_ldap.pm index 14db437c72..324783ae88 100644 --- a/C4/Auth_with_ldap.pm +++ b/C4/Auth_with_ldap.pm @@ -27,6 +27,7 @@ use C4::Members qw(AddMember changepassword); use C4::Members::Attributes; use C4::Members::AttributeTypes; use C4::Members::Messaging; +use C4::Dates; use C4::Auth qw(checkpw_internal); use Koha::AuthUtils qw(hash_password); use List::MoreUtils qw( any ); @@ -65,6 +66,15 @@ $debug and print STDERR "Got ", scalar(@mapkeys), " ldap mapkeys ( total ): ", @mapkeys = grep {defined $mapping{$_}->{is}} @mapkeys; $debug and print STDERR "Got ", scalar(@mapkeys), " ldap mapkeys (populated): ", join ' ', @mapkeys, "\n"; +my %categorycode_conversions; +my $default_categorycode; +if(defined $ldap->{categorycode_mapping}) { + $default_categorycode = $ldap->{categorycode_mapping}->{default}; + foreach my $cat (@{$ldap->{categorycode_mapping}->{categorycode}}) { + $categorycode_conversions{$cat->{value}} = $cat->{content}; + } +} + my %config = ( anonymous => ($ldapname and $ldappassword) ? 0 : 1, replicate => defined($ldap->{replicate}) ? $ldap->{replicate} : 1, # add from LDAP to Koha database for new user @@ -256,6 +266,18 @@ sub ldap_entry_2_hash { . substr($borrower{ 'surname' },0,1) . " "); + # Date and categorycode conversions + $borrower{'dateexpiry'} = C4::Dates->new($borrower{'dateexpiry'},'sql')->output('iso') if $borrower{'dateexpiry'}; + $borrower{'dateofbirth'} = C4::Dates->new($borrower{'dateofbirth'},'sql')->output('iso') if $borrower{'dateofbirth'}; + $borrower{'dateenrolled'} = C4::Dates->new($borrower{'dateenrolled'},'sql')->output('iso') if $borrower{'dateenrolled'}; + + if(defined $categorycode_conversions{$borrower{categorycode}}) { + $borrower{categorycode} = $categorycode_conversions{$borrower{categorycode}}; + } + elsif($default_categorycode) { + $borrower{categorycode} = $default_categorycode; + } + # check if categorycode exists, if not, fallback to default from koha-conf.xml my $dbh = C4::Context->dbh; my $sth = $dbh->prepare("SELECT categorycode FROM categories WHERE categorycode = ?"); -- 2.39.5