From 5ca79e97a80110fc90b123d94f44f412567f9fdf Mon Sep 17 00:00:00 2001 From: Jesse Weaver Date: Wed, 2 Apr 2014 15:53:03 +0000 Subject: [PATCH] [SIGNED OFF] BUG12026: Adds auto-provisioning to shibboleth - Adds the option to map shibboleth attributes to koha user columns and allows mapping to auto create non-existant users Signed-off-by: Martin Renvoize --- C4/Auth_with_shibboleth.pm | 27 ++++++++++++++++++++++++--- C4/Members.pm | 15 +++++++++++++-- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/C4/Auth_with_shibboleth.pm b/C4/Auth_with_shibboleth.pm index 214ef1b..fd95f90 100644 --- a/C4/Auth_with_shibboleth.pm +++ b/C4/Auth_with_shibboleth.pm @@ -22,6 +22,8 @@ use warnings; use C4::Debug; use C4::Context; +use C4::Members qw( AddMember_Auto ); +use C4::Members::Messaging; use Carp; use CGI; @@ -95,9 +97,28 @@ sub checkpw_shib { return ( 1, $retnumber, $userid ); } - # If we reach this point, the user is not a valid koha user - $debug and warn "User $userid is not a valid Koha user"; - return 0; + if ( $shib->{'autocreate'} ) { + return _autocreate( $dbh, $shib, $userid ); + } else { + # If we reach this point, the user is not a valid koha user + $debug and warn "User $userid is not a valid Koha user"; + return 0; + } +} + +sub _autocreate { + my ( $dbh, $shib, $userid ) = @_; + + my %borrower = ( userid => $userid ); + + while ( my ( $key, $entry ) = each %{$shib->{'mapping'}} ) { + $borrower{$key} = ( $entry->{'is'} && $ENV{ $entry->{'is'} } ) || $entry->{'content'} || ''; + } + + %borrower = AddMember_Auto( %borrower ); + C4::Members::Messaging::SetMessagingPreferencesFromDefaults( { borrowernumber => $borrower{'borrowernumber'}, categorycode => $borrower{'categorycode'} } ); + + return ( 1, $borrower{'cardnumber'}, $borrower{'userid'} ); } 1; diff --git a/C4/Members.pm b/C4/Members.pm index 13244e0..2dab330 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -121,6 +121,7 @@ BEGIN { #Insert data push @EXPORT, qw( &AddMember + &AddMember_Auto &AddMember_Opac &MoveMemberToDeleted &ExtendMemberSubscriptionTo @@ -2432,6 +2433,16 @@ sub GetBorrowersWithEmail { return @result; } +sub AddMember_Auto { + my ( %borrower ) = @_; + + $borrower{'cardnumber'} ||= fixup_cardnumber(); + + $borrower{'borrowernumber'} = AddMember(%borrower); + + return ( %borrower ); +} + sub AddMember_Opac { my ( %borrower ) = @_; @@ -2444,9 +2455,9 @@ sub AddMember_Opac { $borrower{'cardnumber'} = fixup_cardnumber(); - my $borrowernumber = AddMember(%borrower); + %borrower = AddMember_Auto(%borrower); - return ( $borrowernumber, $password ); + return ( $borrower{'borrowernumber'}, $borrower{'password'} ); } =head2 AddEnrolmentFeeIfNeeded -- 1.7.10.4