mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue
synced 2024-12-01 09:16:34 +00:00
6352190684
The isAllowedPageAction is used in multiple places (SkinMinerva and in PageActions toolbar builder). This logic should be defined in separate service, easy accessible for different parts of the Minerva skin. Changes: - Introduced MinervaPagePermissions as a centralized place to manage user permissions - Introduced MinervaNoTitlePermissions, an NullObject pattern to handle situations when we do not have Title object (like in CLI) - removed Minerva.ContentHandler service as it's not required any more - moved all permission names into constants - moved isTalkAllowed() into MinervaPermissions - renamed isAllowedPageAction() it `isAllowed()` to not mix it with PageActions. Those checks are used in many places, not only on PageActions menu - made isAllowed( watch ) more robust - now it checks that Title is watchable Bug: T221792 Change-Id: I87d44a9c717b5f752b8d1fd2f146d7f5eef3c53f
49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
* @file
|
|
*/
|
|
namespace MediaWiki\Minerva\Permissions;
|
|
|
|
/**
|
|
* A wrapper for all available Minerva permissions.
|
|
*/
|
|
interface IMinervaPagePermissions {
|
|
|
|
const WATCH = 'watch';
|
|
const SWITCH_LANGUAGE = 'switch-language';
|
|
const EDIT = 'edit';
|
|
const TALK = 'talk';
|
|
const HISTORY = 'history';
|
|
|
|
/**
|
|
* Gets whether or not the action is allowed.
|
|
*
|
|
* @param string $action
|
|
* @return bool
|
|
*/
|
|
public function isAllowed( $action );
|
|
|
|
/**
|
|
* Returns true, if the page can have a talk page and user is logged in.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isTalkAllowed();
|
|
|
|
}
|