Bug 12026: 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: Mirko Tietgen <mirko@abunchofthings.net> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Olli-Antti Kivilahti <olli-antti.kivilahti@jns.fi> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
2370695fb9
commit
9b92ce4cd1
2 changed files with 41 additions and 7 deletions
|
@ -23,6 +23,8 @@ use C4::Debug;
|
|||
use C4::Context;
|
||||
use Koha::AuthUtils qw(get_script_name);
|
||||
use Koha::Database;
|
||||
use C4::Members qw( AddMember_Auto );
|
||||
use C4::Members::Messaging;
|
||||
use Carp;
|
||||
use CGI;
|
||||
|
||||
|
@ -102,11 +104,28 @@ sub checkpw_shib {
|
|||
return ( 1, $borrower->get_column('cardnumber'), $borrower->get_column('userid') );
|
||||
}
|
||||
|
||||
# If we reach this point, the user is not a valid koha user
|
||||
$debug
|
||||
and warn
|
||||
"User with $config->{matchpoint} of $match 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'} );
|
||||
}
|
||||
|
||||
sub _get_uri {
|
||||
|
|
|
@ -88,6 +88,7 @@ BEGIN {
|
|||
#Insert data
|
||||
push @EXPORT, qw(
|
||||
&AddMember
|
||||
&AddMember_Auto
|
||||
&AddMember_Opac
|
||||
);
|
||||
|
||||
|
@ -1261,6 +1262,20 @@ sub GetBorrowersWithEmail {
|
|||
return @result;
|
||||
}
|
||||
|
||||
=head2 AddMember_Auto
|
||||
|
||||
=cut
|
||||
|
||||
sub AddMember_Auto {
|
||||
my ( %borrower ) = @_;
|
||||
|
||||
$borrower{'cardnumber'} ||= fixup_cardnumber();
|
||||
|
||||
$borrower{'borrowernumber'} = AddMember(%borrower);
|
||||
|
||||
return ( %borrower );
|
||||
}
|
||||
|
||||
=head2 AddMember_Opac
|
||||
|
||||
=cut
|
||||
|
@ -1278,9 +1293,9 @@ sub AddMember_Opac {
|
|||
|
||||
$borrower{'cardnumber'} = fixup_cardnumber( $borrower{'cardnumber'} );
|
||||
|
||||
my $borrowernumber = AddMember(%borrower);
|
||||
%borrower = AddMember_Auto(%borrower);
|
||||
|
||||
return ( $borrowernumber, $borrower{'password'} );
|
||||
return ( $borrower{'borrowernumber'}, $borrower{'password'} );
|
||||
}
|
||||
|
||||
=head2 DeleteExpiredOpacRegistrations
|
||||
|
|
Loading…
Reference in a new issue