use C4::Members::Messaging;
use Carp;
use CGI;
-use List::Util qw(any);
+use List::MoreUtils qw(any);
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $debug);
Koha::Database->new()->schema()->resultset('Borrower')
->find( { $config->{matchpoint} => $match } );
if ( defined($borrower) ) {
+ if ($config->{'sync'}) {
+ _sync($borrower->borrowernumber, $config, $match);
+ }
return ( 1, $borrower->get_column('cardnumber'), $borrower->get_column('userid') );
}
return ( 1, $patron->cardnumber, $patron->userid );
}
+sub _sync {
+ my ($borrowernumber, $config, $match ) = @_;
+ my %borrower;
+ $borrower{'borrowernumber'} = $borrowernumber;
+ while ( my ( $key, $entry ) = each %{$config->{'mapping'}} ) {
+ if ( any { /(^psgi|^plack)/i } keys %ENV ) {
+ $borrower{$key} = ( $entry->{'is'} && $ENV{"HTTP_" . uc($entry->{'is'}) } ) || $entry->{'content'} || '';
+ } else {
+ $borrower{$key} = ( $entry->{'is'} && $ENV{ $entry->{'is'} } ) || $entry->{'content'} || '';
+ }
+ }
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ $patron->set(\%borrower)->store;
+}
+
sub _get_uri {
my $protocol = "https://";
# Mock Variables
my $matchpoint = 'userid';
my $autocreate = 0;
+my $sync = 0;
my %mapping = (
'userid' => { 'is' => 'uid' },
'surname' => { 'is' => 'sn' },
## checkpw_shib
subtest "checkpw_shib tests" => sub {
- plan tests => 18;
+ plan tests => 21;
my $shib_login;
my ( $retval, $retcard, $retuserid );
'Found $new_users surname';
$autocreate = 0;
+ # sync user
+ $sync = 1;
+ $ENV{'city'} = 'AnotherCity';
+ warnings_are {
+ ( $retval, $retcard, $retuserid ) = checkpw_shib($shib_login);
+ }
+ [], "good user with sync";
+
+ ok my $sync_user = ResultSet('Borrower')
+ ->search( { 'userid' => 'test4321' }, { rows => 1 } ), "sync user found";
+
+ is_fields [qw/surname dateexpiry address city/], $sync_user->next,
+ [qw/pika 2017 Address AnotherCity/],
+ 'Found $sync_user synced city';
+ $sync = 0;
+
# debug on
$C4::Auth_with_shibboleth::debug = '1';
my %shibboleth = (
'autocreate' => $autocreate,
+ 'sync' => $sync,
'matchpoint' => $matchpoint,
'mapping' => \%mapping
);
sub reset_config {
$matchpoint = 'userid';
$autocreate = 0;
+ $sync = 0;
%mapping = (
'userid' => { 'is' => 'uid' },
'surname' => { 'is' => 'sn' },