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 |
- |
|
|