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(
$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" );
C4::Context->preference("PatronSelfRegistrationBorrowerMandatoryField");
my @fields = split( /\|/, $BorrowerMandatoryField );
+ push @fields, 'gdpr_proc_consent' if C4::Context->preference('GDPR_Policy');
foreach (@fields) {
$mandatory_fields{$_} = 1;
$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;
}