wiki.techinc.nl/includes/Rest/BasicAccess/BasicRequestAuthorizer.php
Umherirrender 512aadac31 Use type declaration for class properties holding type hinted arguments
Provided arguments already have type declaration on the construtor
and it is safe to use the same type on the class property

Change-Id: Ia8bbdc4dee59dfb487582dd514486ec8542951be
2024-09-11 20:08:50 +00:00

56 lines
1.3 KiB
PHP

<?php
namespace MediaWiki\Rest\BasicAccess;
use MediaWiki\Rest\Handler;
use MediaWiki\Rest\RequestInterface;
/**
* A request authorizer which checks needsReadAccess() and needsWriteAccess() in the
* handler and calls isReadAllowed() and/or isWriteAllowed() in the subclass
* accordingly.
*
* @internal
*/
abstract class BasicRequestAuthorizer {
protected RequestInterface $request;
protected Handler $handler;
/**
* @param RequestInterface $request
* @param Handler $handler
*/
public function __construct( RequestInterface $request, Handler $handler ) {
$this->request = $request;
$this->handler = $handler;
}
/**
* @see BasicAuthorizerInterface::authorize()
* @return string|null If the request is denied, the string error code. If
* the request is allowed, null.
*/
public function authorize() {
if ( $this->handler->needsReadAccess() && !$this->isReadAllowed() ) {
return 'rest-read-denied';
}
if ( $this->handler->needsWriteAccess() && !$this->isWriteAllowed() ) {
return 'rest-write-denied';
}
return null;
}
/**
* Check if the current user is allowed to read from the wiki
*
* @return bool
*/
abstract protected function isReadAllowed();
/**
* Check if the current user is allowed to write to the wiki
*
* @return bool
*/
abstract protected function isWriteAllowed();
}