Open Monograph Press  3.3.0
ApiAuthorizationMiddleware.inc.php
1 <?php
2 
17 
19  protected $_handler = null;
20 
26  public function __construct(APIHandler $handler) {
27  $this->_handler = $handler;
28  }
29 
36  protected function _authorize($slimRequest) {
37  // share SlimRequest with Handler
38  $this->_handler->setSlimRequest($slimRequest);
39  $request = $this->_handler->getRequest();
40  $args = array($slimRequest);
41  if (!$slimRequest->getAttribute('route')) {
42  return $request->getRouter()->handleAuthorizationFailure($request, 'api.404.endpointNotFound');
43  } elseif ($this->_handler->authorize($request, $args, $this->_handler->getRoleAssignments())) {
44  $this->_handler->validate($request, $args);
45  $this->_handler->initialize($request, $args);
46  return true;
47  } else {
48  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_API, LOCALE_COMPONENT_APP_API);
49  $authorizationMessage = $this->_handler->getLastAuthorizationMessage();
50  if ($authorizationMessage == '') $authorizationMessage = 'api.403.unauthorized';
51  $router = $request->getRouter();
52  $result = $router->handleAuthorizationFailure($request, $authorizationMessage);
53  switch(1) {
54  case is_string($result): return $result;
55  case is_a($result, 'JSONMessage'): return $result->getString();
56  default:
57  assert(false);
58  return null;
59  }
60  }
61  }
62 
71  public function __invoke($request, $response, $next) {
72  $result = $this->_authorize($request);
73  if ($result !== true) {
74  return $result;
75  }
76 
77  $response = $next($request, $response);
78  return $response;
79  }
80 }
ApiAuthorizationMiddleware\$_handler
$_handler
Definition: ApiAuthorizationMiddleware.inc.php:22
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
APIHandler
Base request API handler.
Definition: APIHandler.inc.php:22
ApiAuthorizationMiddleware\__construct
__construct(APIHandler $handler)
Definition: ApiAuthorizationMiddleware.inc.php:29
ApiAuthorizationMiddleware
Slim middleware which enforces authorization policies.
Definition: ApiAuthorizationMiddleware.inc.php:16
ApiAuthorizationMiddleware\_authorize
_authorize($slimRequest)
Definition: ApiAuthorizationMiddleware.inc.php:39
ApiAuthorizationMiddleware\__invoke
__invoke($request, $response, $next)
Definition: ApiAuthorizationMiddleware.inc.php:74