From a78293a19e38ec356fa36b61cebba9e9abd84a8e Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Thu, 31 May 2018 12:29:59 +0200 Subject: [PATCH] Bug 20819: Add consent to self-registration process Content-Type: text/plain; charset=utf-8 We add a section for the GDPR consent in opac-memberentry (only for the self-registration). Not when editing personal details. Test plan: [1] Enable selfregistration (with confirm) and GDPR policy. [2] Register a new account in OPAC. Verify that the GDPR checkbox is required. [3] After you submit, you should see a date in borrower_modifications field gdpr_proc_consent. [4] When you confirm, verify that the consent is visible on your consents. [5] Enable selfregistration without confirmation mail. Register again. [6] Check your consents tab again. Signed-off-by: Marcel de Rooy --- .../opac-tmpl/bootstrap/en/modules/opac-memberentry.tt | 14 +++++++++++++- opac/opac-memberentry.pl | 8 ++++++++ opac/opac-registration-verify.pl | 3 +++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt index 7b39196..3ea1b64 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt @@ -893,8 +893,20 @@ [% END %] [% END %] - [% UNLESS action == 'edit' %] + [% IF Koha.Preference('GDPR_Policy') && action != 'edit' %] + + [% END %] + + [% UNLESS action == 'edit' %]
+ Verification
  1. diff --git a/opac/opac-memberentry.pl b/opac/opac-memberentry.pl index 9d3bed8..2f5574a 100755 --- a/opac/opac-memberentry.pl +++ b/opac/opac-memberentry.pl @@ -30,6 +30,7 @@ use C4::Members::Attributes qw( GetBorrowerAttributes ); 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; @@ -207,8 +208,11 @@ if ( $action eq 'create' ) { $template->param( OpacPasswordChange => C4::Context->preference('OpacPasswordChange') ); + my $consent_dt = delete $borrower{gdpr_proc_consent}; my ( $borrowernumber, $password ) = AddMember_Opac(%borrower); + Koha::Patron::Consent->new({ borrowernumber => $borrowernumber, type => 'GDPR_PROCESSING', given_on => $consent_dt })->store if $consent_dt; 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'); $template->param( password_cleartext => $password ); @@ -353,6 +357,7 @@ sub GetMandatoryFields { C4::Context->preference("PatronSelfRegistrationBorrowerMandatoryField"); my @fields = split( /\|/, $BorrowerMandatoryField ); + push @fields, 'gdpr_proc_consent' if C4::Context->preference('GDPR_Policy'); foreach (@fields) { $mandatory_fields{$_} = 1; @@ -459,6 +464,9 @@ sub ParseCgiForBorrower { $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; } diff --git a/opac/opac-registration-verify.pl b/opac/opac-registration-verify.pl index 2d9b9f7..5675eb0 100755 --- a/opac/opac-registration-verify.pl +++ b/opac/opac-registration-verify.pl @@ -24,6 +24,7 @@ use C4::Output; use C4::Members; use C4::Form::MessagingPreferences; use Koha::Patrons; +use Koha::Patron::Consent; use Koha::Patron::Modifications; my $cgi = new CGI; @@ -61,8 +62,10 @@ if ( my $borrower = $m->unblessed(); + my $consent_dt = delete $borrower->{gdpr_proc_consent}; my $password; ( $borrowernumber, $password ) = AddMember_Opac(%$borrower); + Koha::Patron::Consent->new({ borrowernumber => $borrowernumber, type => 'GDPR_PROCESSING', given_on => $consent_dt })->store if $consent_dt; if ($borrowernumber) { $m->delete(); -- 2.1.4