Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
75.00% covered (warning)
75.00%
15 / 20
66.67% covered (warning)
66.67%
10 / 15
CRAP
0.00% covered (danger)
0.00%
0 / 1
UltimateAuthority
75.00% covered (warning)
75.00%
15 / 20
66.67% covered (warning)
66.67%
10 / 15
23.06
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getUser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getBlock
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isAllowed
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isAllowedAny
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 isAllowedAll
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 probablyCan
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 definitelyCan
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isDefinitelyAllowed
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 authorizeAction
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 authorizeRead
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 authorizeWrite
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isRegistered
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 isTemp
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 isNamed
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2/**
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 * http://www.gnu.org/copyleft/gpl.html
17 *
18 * @file
19 */
20
21namespace MediaWiki\Permissions;
22
23use IDBAccessObject;
24use InvalidArgumentException;
25use MediaWiki\Block\Block;
26use MediaWiki\Page\PageIdentity;
27use MediaWiki\User\UserIdentity;
28
29/**
30 * Represents an authority that has all permissions.
31 * This is intended for use in maintenance scripts and tests.
32 *
33 * @newable
34 * @since 1.36
35 */
36class UltimateAuthority implements Authority {
37
38    /** @var UserIdentity */
39    private $actor;
40
41    /** @var bool */
42    private $isTemp;
43
44    /**
45     * @stable to call
46     * @param UserIdentity $actor
47     * @param bool $isTemp
48     */
49    public function __construct( UserIdentity $actor, $isTemp = false ) {
50        $this->actor = $actor;
51        $this->isTemp = $isTemp;
52    }
53
54    /** @inheritDoc */
55    public function getUser(): UserIdentity {
56        return $this->actor;
57    }
58
59    /** @inheritDoc */
60    public function getBlock( int $freshness = IDBAccessObject::READ_NORMAL ): ?Block {
61        return null;
62    }
63
64    /** @inheritDoc */
65    public function isAllowed( string $permission, PermissionStatus $status = null ): bool {
66        return true;
67    }
68
69    /** @inheritDoc */
70    public function isAllowedAny( ...$permissions ): bool {
71        if ( !$permissions ) {
72            throw new InvalidArgumentException( 'At least one permission must be specified' );
73        }
74
75        return true;
76    }
77
78    /** @inheritDoc */
79    public function isAllowedAll( ...$permissions ): bool {
80        if ( !$permissions ) {
81            throw new InvalidArgumentException( 'At least one permission must be specified' );
82        }
83
84        return true;
85    }
86
87    /** @inheritDoc */
88    public function probablyCan(
89        string $action,
90        PageIdentity $target,
91        PermissionStatus $status = null
92    ): bool {
93        return true;
94    }
95
96    /** @inheritDoc */
97    public function definitelyCan(
98        string $action,
99        PageIdentity $target,
100        PermissionStatus $status = null
101    ): bool {
102        return true;
103    }
104
105    /** @inheritDoc */
106    public function isDefinitelyAllowed( string $action, PermissionStatus $status = null ): bool {
107        return true;
108    }
109
110    /** @inheritDoc */
111    public function authorizeAction( string $action, PermissionStatus $status = null ): bool {
112        return true;
113    }
114
115    /** @inheritDoc */
116    public function authorizeRead(
117        string $action,
118        PageIdentity $target,
119        PermissionStatus $status = null
120    ): bool {
121        return true;
122    }
123
124    /** @inheritDoc */
125    public function authorizeWrite(
126        string $action,
127        PageIdentity $target,
128        PermissionStatus $status = null
129    ): bool {
130        return true;
131    }
132
133    public function isRegistered(): bool {
134        return $this->actor->isRegistered();
135    }
136
137    public function isTemp(): bool {
138        return $this->isTemp;
139    }
140
141    public function isNamed(): bool {
142        return $this->isRegistered() && !$this->isTemp();
143    }
144}