SpecialUserrights: Improve ::userCanChangeRights() method logic
authorDerick Alangi <alangiderick@gmail.com>
Sat, 23 Mar 2019 13:02:00 +0000 (14:02 +0100)
committerDerick Alangi <alangiderick@gmail.com>
Sun, 28 Apr 2019 21:55:35 +0000 (22:55 +0100)
Bug: T37674
Change-Id: I22aa9ff72aec175b0f86ebcf48cd7716f3328b01

includes/specials/SpecialUserrights.php

index 540754f..7d97e58 100644 (file)
@@ -61,15 +61,23 @@ class UserrightsPage extends SpecialPage {
                $isself = $this->getUser()->equals( $targetUser );
 
                $available = $this->changeableGroups();
-               if ( $targetUser->getId() == 0 ) {
+               if ( $targetUser->getId() === 0 ) {
                        return false;
                }
 
-               return !empty( $available['add'] )
-                       || !empty( $available['remove'] )
-                       || ( ( $isself || !$checkIfSelf ) &&
-                               ( !empty( $available['add-self'] )
-                                       || !empty( $available['remove-self'] ) ) );
+               if ( $available['add'] || $available['remove'] ) {
+                       // can change some rights for any user
+                       return true;
+               }
+
+               if ( ( $available['add-self'] || $available['remove-self'] )
+                       && ( $isself || !$checkIfSelf )
+               ) {
+                       // can change some rights for self
+                       return true;
+               }
+
+               return false;
        }
 
        /**