If a user does not have permission to view a log type, throw a PermissionsError
authorKunal Mehta <legoktm@gmail.com>
Fri, 19 Jul 2013 04:14:51 +0000 (21:14 -0700)
committerKunal Mehta <legoktm@gmail.com>
Thu, 25 Jul 2013 09:50:52 +0000 (02:50 -0700)
Currently if you view a private log like [[Special:Log/suppress]] and do not
have the right permission, you just see [[Special:Log]]. Now it will
throw a PermissionsError which states the user does not have the right permission.

Bug: 17881
Change-Id: I15486a1cc227a4900ab7cd38d7f0cc7eb685195a

includes/specials/SpecialLog.php

index 5d55a28..2ffdd89 100644 (file)
@@ -74,14 +74,14 @@ class SpecialLog extends SpecialPage {
                        $opts->setValue( 'month', '' );
                }
 
-               // Reset the log type to default (nothing) if it's invalid or if the
-               // user does not possess the right to view it
+               // If the user doesn't have the right permission to view the specific
+               // log type, throw a PermissionsError
+               // If the log type is invalid, just show all public logs
                $type = $opts->getValue( 'type' );
-               if ( !LogPage::isLogType( $type )
-                       || ( isset( $wgLogRestrictions[$type] )
-                               && !$this->getUser()->isAllowed( $wgLogRestrictions[$type] ) )
-               ) {
+               if ( !LogPage::isLogType( $type ) ) {
                        $opts->setValue( 'type', '' );
+               } elseif ( isset( $wgLogRestrictions[$type] ) && !$this->getUser()->isAllowed( $wgLogRestrictions[$type] ) ) {
+                       throw new PermissionsError( $wgLogRestrictions[$type] );
                }
 
                # Handle type-specific inputs