reflector = $reflector; $this->isAdmin = $isAdmin; $this->isSubAdmin = $isSubAdmin; } /** * @param \OCP\AppFramework\Controller $controller * @param string $methodName * * @throws NotSubAdminException */ public function beforeController($controller, $methodName) { if (!$this->isAdmin && !$this->reflector->hasAnnotation('NoSubAdminRequired') && !$this->isSubAdmin) { throw new NotSubAdminException(); } } /** * @param \OCP\AppFramework\Controller $controller * @param string $methodName * @param \Exception $exception * @throws \Exception * @return Response */ public function afterException($controller, $methodName, \Exception $exception) { if ($exception instanceof NotSubAdminException) { throw new OCSException($exception->getMessage(), \OCP\API::RESPOND_UNAUTHORISED); } throw $exception; } }