|
Lines 20-25
package Koha::Auth::Client;
Link Here
|
| 20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
| 21 |
|
21 |
|
| 22 |
use C4::Context; |
22 |
use C4::Context; |
|
|
23 |
use Try::Tiny qw( catch try ); |
| 23 |
|
24 |
|
| 24 |
use Koha::Exceptions::Auth; |
25 |
use Koha::Exceptions::Auth; |
| 25 |
use Koha::Auth::Identity::Providers; |
26 |
use Koha::Auth::Identity::Providers; |
|
Lines 85-91
sub get_user {
Link Here
|
| 85 |
$patron = $args->{'patron'}; |
86 |
$patron = $args->{'patron'}; |
| 86 |
$domain = $args->{'domain'}; |
87 |
$domain = $args->{'domain'}; |
| 87 |
|
88 |
|
| 88 |
$patron->set($mapped_data)->store if $patron && $domain->update_on_auth; |
89 |
# Handle user registration and updates at client level |
|
|
90 |
if ( $patron && $domain->update_on_auth ) { |
| 91 |
$patron = $self->update_user( $patron, $mapped_data ); |
| 92 |
} elsif ( !$patron && $domain->auto_register ) { |
| 93 |
$patron = $self->register_user( $mapped_data, $domain ); |
| 94 |
} |
| 89 |
|
95 |
|
| 90 |
$mapped_data->{categorycode} = $domain->default_category_id; |
96 |
$mapped_data->{categorycode} = $domain->default_category_id; |
| 91 |
$mapped_data->{branchcode} = $domain->default_library_id; |
97 |
$mapped_data->{branchcode} = $domain->default_library_id; |
|
Lines 93-98
sub get_user {
Link Here
|
| 93 |
return ( $patron, $mapped_data, $domain ); |
99 |
return ( $patron, $mapped_data, $domain ); |
| 94 |
} |
100 |
} |
| 95 |
|
101 |
|
|
|
102 |
=head3 register_user |
| 103 |
|
| 104 |
my $patron = $client->register_user( $user_data, $domain ); |
| 105 |
|
| 106 |
Creates a new patron from the provided user data and domain configuration. |
| 107 |
|
| 108 |
=cut |
| 109 |
|
| 110 |
sub register_user { |
| 111 |
my ( $self, $user_data, $domain ) = @_; |
| 112 |
|
| 113 |
return unless $user_data && $domain; |
| 114 |
|
| 115 |
# Set required fields from domain configuration |
| 116 |
$user_data->{categorycode} = $domain->default_category_id; |
| 117 |
$user_data->{branchcode} = $domain->default_library_id; |
| 118 |
|
| 119 |
try { |
| 120 |
my $patron = Koha::Patron->new($user_data)->store; |
| 121 |
my $logger = Koha::Logger->get( { interface => 'api' } ); |
| 122 |
$logger->info( "Auto-registered user: " . $patron->userid ); |
| 123 |
return $patron; |
| 124 |
} catch { |
| 125 |
my $logger = Koha::Logger->get( { interface => 'api' } ); |
| 126 |
$logger->error("Failed to auto-register user: $_"); |
| 127 |
return; |
| 128 |
}; |
| 129 |
} |
| 130 |
|
| 131 |
=head3 update_user |
| 132 |
|
| 133 |
my $patron = $client->update_user( $patron, $user_data ); |
| 134 |
|
| 135 |
Updates an existing patron with the provided user data. |
| 136 |
|
| 137 |
=cut |
| 138 |
|
| 139 |
sub update_user { |
| 140 |
my ( $self, $patron, $user_data ) = @_; |
| 141 |
|
| 142 |
return $patron unless $patron && $user_data; |
| 143 |
|
| 144 |
# Remove fields that shouldn't be updated |
| 145 |
my $update_data = {%$user_data}; |
| 146 |
delete $update_data->{borrowernumber}; |
| 147 |
delete $update_data->{categorycode}; |
| 148 |
delete $update_data->{branchcode}; |
| 149 |
|
| 150 |
try { |
| 151 |
$patron->set($update_data)->store; |
| 152 |
my $logger = Koha::Logger->get( { interface => 'api' } ); |
| 153 |
$logger->debug( "Updated user data for: " . $patron->userid ); |
| 154 |
return $patron; |
| 155 |
} catch { |
| 156 |
my $logger = Koha::Logger->get( { interface => 'api' } ); |
| 157 |
$logger->error("Failed to update user: $_"); |
| 158 |
return $patron; # Return original patron on failure |
| 159 |
}; |
| 160 |
} |
| 161 |
|
| 96 |
=head3 get_valid_domain_config |
162 |
=head3 get_valid_domain_config |
| 97 |
|
163 |
|
| 98 |
my $domain = Koha::Auth::Client->get_valid_domain_config( |
164 |
my $domain = Koha::Auth::Client->get_valid_domain_config( |
| 99 |
- |
|
|