use C4::VirtualShelves;
use POSIX qw/strftime/;
+use Cache::Memcached;
+
# use utf8;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $debug $ldap $cas $caslogout);
$borrowernumber = getborrowernumber($user) if defined($user);
my ( $borr ) = GetMemberDetails( $borrowernumber );
+
+ if ( ! $borr ) {
+ # create new user from SAML data
+ if ( my $token = $in->{query}->cookie('AuthMemCookie') ) {
+
+
+ my $memd = new Cache::Memcached { 'servers' => [ '127.0.0.1:11211' ] };
+ if ( my $data = $memd->get($token) ) {
+
+ my $saml;
+ foreach ( split(/[\n\r]+/,$data) ) {
+ my ($n,$v) = split /=/, $_;
+ $saml->{$n} = $v;
+ }
+
+ if ( $borrowernumber = getborrowernumber($saml->{ATTR_nick}) ) {
+ warn "SAML login OK $borrowernumber";
+ } else {
+ my $borrower = {
+ cardnumber => 'S' . $saml->{ATTR_code}, # FIXME
+ categorycode => 'S',
+
+ userid => $saml->{ATTR_nick},
+ firstname => $saml->{ATTR_first_name},
+ surname => $saml->{ATTR_last_name},
+ branchcode => 'SRE', # FIXME
+ email => $saml->{ATTR_email},
+ dateexpiry => '2020-12-13',
+ password => $token, # required so AddMember won't erase userid
+ };
+
+ AddMember( %$borrower );
+
+ warn "ADDED $data";
+
+ $borrowernumber = getborrowernumber($borrower->{userid}); # || die "can't find borrower number for $borrower->{userid}";
+ }
+
+ $borr = GetMemberDetails( $borrowernumber ); # || die "can't find borrower $borrowernumber";
+ } else {
+ die "Can't find SAML token $token for user $user\n";
+ }
+ } else {
+ die "Can't find SAML token for user $user\n" unless $borr;
+ }
+ }
+
my @bordat;
$bordat[0] = $borr;
$template->param( "USER_INFO" => \@bordat );