From 5efc27ea53b0bb8e75a8bb876f064edfdade1b5b Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 17 Feb 2020 16:44:37 +0100 Subject: [PATCH] Bug 24663: Handle special cases for recovery password and selfreg MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The password recovery and self-registration features need to be accessible at the OPAC even if not public. Test plan: Self register a new account, then ask for a new password with OpacPublic turned off Signed-off-by: Martin Renvoize Signed-off-by: Tomás Cohen Arazi Signed-off-by: Jonathan Druart --- C4/Auth.pm | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/C4/Auth.pm b/C4/Auth.pm index a58b0a8b07..80cc4773a6 100644 --- a/C4/Auth.pm +++ b/C4/Auth.pm @@ -171,7 +171,9 @@ sub get_template_and_user { $in->{'query'}, $in->{'authnotrequired'}, $in->{'flagsrequired'}, - $in->{'type'} + $in->{'type'}, + undef, + $in->{template_name}, ); } @@ -782,9 +784,21 @@ sub checkauth { my $flagsrequired = shift; my $type = shift; my $emailaddress = shift; + my $template_name = shift; $type = 'opac' unless $type; - $authnotrequired = 0 unless C4::Context->preference("OpacPublic"); + unless ( C4::Context->preference("OpacPublic") ) { + my @allowed_scripts_for_private_opac = qw( + opac-memberentry.tt + opac-registration-email-sent.tt + opac-registration-confirmation.tt + opac-memberentry-update-submitted.tt + opac-password-recovery.tt + ); + $authnotrequired = 0 unless grep { $_ eq $template_name } + @allowed_scripts_for_private_opac; + } + my $dbh = C4::Context->dbh; my $timeout = _timeout_syspref(); @@ -1249,8 +1263,8 @@ sub checkauth { $LibraryNameTitle =~ s/<(?:\/?)(?:br|p)\s*(?:\/?)>/ /sgi; $LibraryNameTitle =~ s/<(?:[^<>'"]|'(?:[^']*)'|"(?:[^"]*)")*>//sg; - my $template_name = ( $type eq 'opac' ) ? 'opac-auth.tt' : 'auth.tt'; - my $template = C4::Templates::gettemplate( $template_name, $type, $query ); + my $auth_template_name = ( $type eq 'opac' ) ? 'opac-auth.tt' : 'auth.tt'; + my $template = C4::Templates::gettemplate( $auth_template_name, $type, $query ); $template->param( login => 1, INPUTS => \@inputs, -- 2.39.5