Selaa lähdekoodia

Remove php side of check registration

tags/v11.0RC2
Joas Schilling 7 vuotta sitten
vanhempi
commit
681eebcfe6
No account linked to committer's email address

+ 0
- 1
apps/workflowengine/appinfo/routes.php Näytä tiedosto

@@ -21,7 +21,6 @@

return [
'routes' => [
['name' => 'flowOperations#getChecks', 'url' => '/checks', 'verb' => 'GET'], // TODO rm and do via js?
['name' => 'flowOperations#getOperations', 'url' => '/operations', 'verb' => 'GET'],
['name' => 'flowOperations#addOperation', 'url' => '/operations', 'verb' => 'POST'],
['name' => 'flowOperations#updateOperation', 'url' => '/operations/{id}', 'verb' => 'PUT'],

+ 0
- 12
apps/workflowengine/lib/AppInfo/Application.php Näytä tiedosto

@@ -37,18 +37,6 @@ class Application extends \OCP\AppFramework\App {
*/
public function registerHooksAndListeners() {
$dispatcher = $this->getContainer()->getServer()->getEventDispatcher();
$dispatcher->addListener(
'OCP\WorkflowEngine\RegisterCheckEvent',
function(RegisterCheckEvent $event) {
$event->addCheck(
'OCA\WorkflowEngine\Check\UserGroupMembership',
'User group membership',
['is', '!is']
);
},
-100
);

$dispatcher->addListener(
'OCP\WorkflowEngine::loadAdditionalSettingScripts',
function() {

+ 1
- 20
apps/workflowengine/lib/Controller/FlowOperations.php Näytä tiedosto

@@ -26,38 +26,19 @@ use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IRequest;
use OCP\WorkflowEngine\RegisterCheckEvent;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;

class FlowOperations extends Controller {

/** @var Manager */
protected $manager;

/** @var EventDispatcherInterface */
protected $dispatcher;

/**
* @param IRequest $request
* @param Manager $manager
* @param EventDispatcherInterface $dispatcher
*/
public function __construct(IRequest $request, Manager $manager, EventDispatcherInterface $dispatcher) {
public function __construct(IRequest $request, Manager $manager) {
parent::__construct('workflowengine', $request);
$this->manager = $manager;
$this->dispatcher = $dispatcher;
}

/**
* @NoCSRFRequired
*
* @return JSONResponse
*/
public function getChecks() {
$event = new RegisterCheckEvent();
$this->dispatcher->dispatch('OCP\WorkflowEngine\RegisterCheckEvent', $event);

return new JSONResponse($event->getChecks());
}

/**

+ 8
- 6
apps/workflowengine/lib/Manager.php Näytä tiedosto

@@ -110,8 +110,8 @@ class Manager implements IManager {
$checkInstance->setFileInfo($this->storage, $this->path);
return $checkInstance->executeCheck($check['operator'], $check['value']);
} else {
// Check is invalid, assume it matches.
return true;
// Check is invalid
throw new \RuntimeException('Check ' . htmlspecialchars($check['class']) . ' is invalid or does not exist');
}
}

@@ -258,10 +258,12 @@ class Manager implements IManager {
}
$result->closeCursor();

// TODO What if a check is missing? Should we throw?
// As long as we only allow AND-concatenation of checks, a missing check
// is like a matching check, so it evaluates to true and therefor blocks
// access. So better save than sorry.
$checkIds = array_diff($checkIds, array_keys($checks));

if (!empty($checkIds)) {
$missingCheck = array_pop($checkIds);
throw new \RuntimeException('Check #' . htmlspecialchars($missingCheck) . ' is invalid or does not exist');
}

return $checks;
}

+ 0
- 79
lib/public/WorkflowEngine/RegisterCheckEvent.php Näytä tiedosto

@@ -1,79 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

namespace OCP\WorkflowEngine;


use Symfony\Component\EventDispatcher\Event;

/**
* Class RegisterCheckEvent
*
* @package OCP\WorkflowEngine
* @since 9.1
*/
class RegisterCheckEvent extends Event {

/** @var array[] */
protected $checks = [];

/**
* @param string $class
* @param string $name
* @param string[] $operators
* @throws \OutOfBoundsException when the check class is already registered
* @throws \OutOfBoundsException when the provided information is invalid
* @since 9.1
*/
public function addCheck($class, $name, array $operators) {
if (!is_string($class)) {
throw new \OutOfBoundsException('Given class name is not a string');
}

if (isset($this->checks[$class])) {
throw new \OutOfBoundsException('Duplicate check class "' . $class . '"');
}

if (!is_string($name)) {
throw new \OutOfBoundsException('Given check name is not a string');
}

foreach ($operators as $operator) {
if (!is_string($operator)) {
throw new \OutOfBoundsException('At least one of the operators is not a string');
}
}

$this->checks[$class] = [
'class' => $class,
'name' => $name,
'operators' => $operators,
];
}

/**
* @return array[]
* @since 9.1
*/
public function getChecks() {
return array_values($this->checks);
}
}

Loading…
Peruuta
Tallenna