Bug 22483: Restore undef behaviour
authorMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 8 Mar 2019 16:52:07 +0000 (16:52 +0000)
committerTomas Cohen Arazi <tomascohen@theke.io>
Fri, 8 Mar 2019 18:53:10 +0000 (15:53 -0300)
Turns out that we rely heavily on the side effect that passing undef
to haspermission would always return true no matter what permissions
or lack of permissions you had.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
C4/Auth.pm
t/db_dependent/Auth/haspermission.t

index 2a3c492..2b76acc 100644 (file)
@@ -2084,8 +2084,10 @@ sub _dispatch {
 sub haspermission {
     my ( $userid, $flagsrequired ) = @_;
 
-    Koha::Exceptions::WrongParameter->throw('$flagsrequired should not be undef')
-      unless defined($flagsrequired);
+    return 1 unless defined($flagsrequired); # This is horrifying but restores behaviour prior to bug 22031
+
+    #Koha::Exceptions::WrongParameter->throw('$flagsrequired should not be undef')
+    #  unless defined($flagsrequired);
 
     my $sth = C4::Context->dbh->prepare("SELECT flags FROM borrowers WHERE userid=?");
     $sth->execute($userid);
index 2cde29a..6118ec9 100644 (file)
@@ -73,13 +73,16 @@ $builder->build(
 
 subtest 'undef top level tests' => sub {
 
-    plan tests => 2;
+    plan tests => 1;
 
-    throws_ok { my $r = haspermission( $borr1->{userid} ); }
-    'Koha::Exceptions::WrongParameter',
-      'Exception thrown when missing $requiredflags';
-    throws_ok { my $r = haspermission( $borr1->{userid}, undef ); }
-    'Koha::Exceptions::WrongParameter', 'Exception thrown when explicit undef';
+    my $pass = haspermission( $borr2->{userid} );
+    ok($pass, "let through undef privs");
+
+    #throws_ok { my $r = haspermission( $borr1->{userid} ); }
+    #'Koha::Exceptions::WrongParameter',
+    #  'Exception thrown when missing $requiredflags';
+    #throws_ok { my $r = haspermission( $borr1->{userid}, undef ); }
+    #'Koha::Exceptions::WrongParameter', 'Exception thrown when explicit undef';
 };
 
 subtest 'scalar top level tests' => sub {