use C4::Form::MessagingPreferences;
use Koha::AuthUtils;
use Koha::Patrons;
+use Koha::Patron::Consent;
use Koha::Patron::Modification;
use Koha::Patron::Modifications;
use C4::Scrubber;
$template->param(
action => $action,
- hidden => GetHiddenFields( $mandatory, 'registration' ),
+ hidden => GetHiddenFields( $mandatory, $action ),
mandatory => $mandatory,
libraries => \@libraries,
OPACPatronDetails => C4::Context->preference('OPACPatronDetails'),
$verification_token = md5_hex( time().{}.rand().{}.$$ );
}
- $borrower{password} = Koha::AuthUtils::generate_password unless $borrower{password};
+ $borrower{password} = Koha::AuthUtils::generate_password unless $borrower{password};
$borrower{verification_token} = $verification_token;
Koha::Patron::Modification->new( \%borrower )->store();
}
);
- $template->param( OpacPasswordChange =>
- C4::Context->preference('OpacPasswordChange') );
-
- my ( $borrowernumber, $password ) = AddMember_Opac(%borrower);
- C4::Members::Attributes::SetBorrowerAttributes( $borrowernumber, $attributes );
- C4::Form::MessagingPreferences::handle_form_action($cgi, { borrowernumber => $borrowernumber }, $template, 1, C4::Context->preference('PatronSelfRegistrationDefaultCategory') ) if $borrowernumber && C4::Context->preference('EnhancedMessagingPreferences');
+ $borrower{categorycode} ||= C4::Context->preference('PatronSelfRegistrationDefaultCategory');
+ $borrower{password} ||= Koha::AuthUtils::generate_password;
+ my $consent_dt = delete $borrower{gdpr_proc_consent};
+ my $patron = Koha::Patron->new( \%borrower )->store;
+ Koha::Patron::Consent->new({ borrowernumber => $patron->borrowernumber, type => 'GDPR_PROCESSING', given_on => $consent_dt })->store if $consent_dt;
+ if ( $patron ) {
+ C4::Members::Attributes::SetBorrowerAttributes( $patron->borrowernumber, $attributes );
+ if ( C4::Context->preference('EnhancedMessagingPreferences') ) {
+ C4::Form::MessagingPreferences::handle_form_action(
+ $cgi,
+ { borrowernumber => $patron->borrowernumber },
+ $template,
+ 1,
+ C4::Context->preference('PatronSelfRegistrationDefaultCategory')
+ );
+ }
- $template->param( password_cleartext => $password );
- my $patron = Koha::Patrons->find( $borrowernumber );
- $template->param( borrower => $patron->unblessed );
+ $template->param( password_cleartext => $patron->plain_text_password );
+ $template->param( borrower => $patron->unblessed );
+ } else {
+ # FIXME Handle possible errors here
+ }
$template->param(
PatronSelfRegistrationAdditionalInstructions =>
C4::Context->preference(
$borrower_changes{borrowernumber} = $borrowernumber;
$borrower_changes{extended_attributes} = to_json($extended_attributes_changes);
- my $patron_modifications = Koha::Patron::Modifications->search({ borrowernumber => $borrowernumber })->delete;
+ Koha::Patron::Modifications->search({ borrowernumber => $borrowernumber })->delete;
my $m = Koha::Patron::Modification->new( \%borrower_changes )->store();
$template->param(
borrower => $borrower,
guarantor => scalar Koha::Patrons->find($borrowernumber)->guarantor(),
- hidden => GetHiddenFields( $mandatory, 'modification' ),
+ hidden => GetHiddenFields( $mandatory, 'edit' ),
csrf_token => Koha::Token->new->generate_csrf({
session_id => scalar $cgi->cookie('CGISESSID'),
}),
my ( $mandatory, $action ) = @_;
my %hidden_fields;
- my $BorrowerUnwantedField = $action eq 'modification' ?
+ my $BorrowerUnwantedField = $action eq 'edit' || $action eq 'update' ?
C4::Context->preference( "PatronSelfModificationBorrowerUnwantedField" ) :
C4::Context->preference( "PatronSelfRegistrationBorrowerUnwantedField" );
unless ( Email::Valid->address($borrower->{'email'}) ) {
push(@invalidFields, "email");
} elsif ( C4::Context->preference("PatronSelfRegistrationEmailMustBeUnique") ) {
- my $patrons_with_same_email = Koha::Patrons->search(
+ my $patrons_with_same_email = Koha::Patrons->search( # FIXME Should be search_limited?
{
email => $borrower->{email},
(
$borrower{'dateofbirth'} = undef;
}
+ # Replace checkbox 'agreed' by datetime in gdpr_proc_consent
+ $borrower{gdpr_proc_consent} = dt_from_string if $borrower{gdpr_proc_consent} && $borrower{gdpr_proc_consent} eq 'agreed';
+
return %borrower;
}