Properly check permissions.
authorBryan Tong Minh <btongminh@users.mediawiki.org>
Thu, 28 Aug 2008 21:34:43 +0000 (21:34 +0000)
committerBryan Tong Minh <btongminh@users.mediawiki.org>
Thu, 28 Aug 2008 21:34:43 +0000 (21:34 +0000)
includes/UploadFromBase.php
includes/UploadFromUrl.php
includes/specials/SpecialUpload.php

index 0d0dc50..387b13a 100644 (file)
@@ -28,6 +28,11 @@ class UploadFromBase {
                global $wgEnableUploads;
                return $wgEnableUploads;
        }
+       static function isAllowed( User $user ) {
+               if( !$user->isAllowed( 'upload' ) )
+                       return 'upload';
+               return true;
+       }
        
        function __construct( $name ) {
                $this->mDesiredDestName = $name;
index 605b54f..fc40d3a 100644 (file)
@@ -2,6 +2,11 @@
 
 
 class UploadFromUrl extends UploadFromBase {
+       static function isAllowed( User $user ) {
+               if( !$user->isAllowed( 'upload_by_url' ) )
+                       return 'upload_by_url';
+               return parent::isAllowed( $user );
+       }
        static function isEnabled() {
                global $wgAllowCopyUploads;
                return $wgAllowCopyUploads && parent::isEnabled();
index 08f121e..35a9208 100644 (file)
@@ -122,11 +122,12 @@ class UploadForm {
                }
 
                # Check permissions
-               if( !$wgUser->isAllowed( 'upload' ) ) {
+               $permission = $this->mUpload->isAllowed( $wgUser );
+               if( $permission !== true ) {
                        if( !$wgUser->isLoggedIn() ) {
                                $wgOut->showErrorPage( 'uploadnologin', 'uploadnologintext' );
                        } else {
-                               $wgOut->permissionRequired( 'upload' );
+                               $wgOut->permissionRequired( $permission );
                        }
                        return;
                }