View | Details | Raw Unified | Return to bug 40596
Collapse All | Expand All

(-)a/Koha/Auth/Client.pm (-2 / +67 lines)
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
- 

Return to bug 40596