diff --git a/Message/NotificationLevel.php b/Message/NotificationLevel.php index bfc77090f..5fec77ae2 100644 --- a/Message/NotificationLevel.php +++ b/Message/NotificationLevel.php @@ -30,4 +30,5 @@ abstract class NotificationLevel extends Enum public const INFO = 'info'; public const WARNING = 'warning'; public const ERROR = 'error'; + public const HIDDEN = 'hidden'; } diff --git a/Module/ModuleAbstract.php b/Module/ModuleAbstract.php index 19ed14aea..d16cc9867 100644 --- a/Module/ModuleAbstract.php +++ b/Module/ModuleAbstract.php @@ -14,6 +14,7 @@ declare(strict_types=1); namespace phpOMS\Module; +use phpOMS\ApplicationAbstract; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; use phpOMS\System\MimeType; @@ -103,11 +104,11 @@ abstract class ModuleAbstract /** * Constructor. * - * @param \phpOMS\ApplicationAbstract $app Application instance + * @param ApplicationAbstract $app Application instance * * @since 1.0.0 */ - public function __construct($app) + public function __construct(ApplicationAbstract $app) { $this->app = $app; } diff --git a/Router/Router.php b/Router/Router.php index 933ea8503..44ed1e9fb 100644 --- a/Router/Router.php +++ b/Router/Router.php @@ -99,19 +99,27 @@ final class Router /** * Route request. * - * @param RequestAbstract $request Request to route - * @param int $verb Route verb + * @param string $uri Route + * @param string $csrf CSRF token + * @param int $verb Route verb + * @param string $app Application name + * @param int $orgId Organization id + * @param mixed $account Account * * @return array[] * * @since 1.0.0 */ - public function route(RequestAbstract $request, int $verb = RouteVerb::GET, string $app = null, int $orgId = null, $account = null) : array + public function route( + string $uri, + string $csrf = null, + int $verb = RouteVerb::GET, + string $app = null, + int $orgId = null, + $account = null + ) : array { $bound = []; - $uri = $request->getUri()->getRoute(); - $csrf = $request->getData('CSRF'); - foreach ($this->routes as $route => $destination) { if (!((bool) \preg_match('~^' . $route . '$~', $uri))) { continue; @@ -125,7 +133,7 @@ final class Router // if csrf is required but not set if (isset($d['csrf']) && $csrf === null) { // todo: replace http request and http uri with general request and http - \array_merge($bound, $this->route(new Request(new Http('/' . $app . '/e403')), $verb)); + \array_merge($bound, $this->route('/' . $app . '/e403', $csrf, $verb)); continue; } @@ -136,7 +144,10 @@ final class Router && !$account->hasPermission($d['permission']['type'], $orgId, $app, $d['permission']['module'], $d['permission']['state'])) ) { // todo: replace http request and http uri with general request and http - \array_merge($bound, $this->route(new Request(new Http('/' . $app . '/e403')), $verb)); + \array_merge( + $bound, + $this->route('/' . $app . '/e403', $csrf, $verb) + ); continue; } diff --git a/tests/Router/RouterTest.php b/tests/Router/RouterTest.php index aa5621679..404fccfe6 100644 --- a/tests/Router/RouterTest.php +++ b/tests/Router/RouterTest.php @@ -41,7 +41,11 @@ class RouterTest extends \PHPUnit\Framework\TestCase public function testDefault() : void { $router = new Router(); - self::assertEmpty($router->route(new Request(new Http('http://test.com')))); + self::assertEmpty( + $router->route( + (new Request(new Http()))->getUri()->getRoute() + ) + ); } public function testGetSet() : void @@ -52,33 +56,52 @@ class RouterTest extends \PHPUnit\Framework\TestCase self::assertEquals( [['dest' => '\Modules\Admin\Controller:viewSettingsGeneral']], - $router->route(new Request(new Http('http://test.com/backend/admin/settings/general/something?test'))) + $router->route( + (new Request( + new Http('http://test.com/backend/admin/settings/general/something?test') + ))->getUri()->getRoute() + ) ); self::assertNotEquals( [['dest' => '\Modules\Admin\Controller:viewSettingsGeneral']], - $router->route(new Request(new Http('http://test.com/backend/admin/settings/general/something?test')), RouteVerb::PUT) + $router->route( + (new Request( + new Http('http://test.com/backend/admin/settings/general/something?test') + ))->getUri()->getRoute(), RouteVerb::PUT) ); self::assertNotEquals( [['dest' => '\Modules\Admin\Controller:viewSettingsGeneral']], - $router->route(new Request(new Http('http://test.com/backends/admin/settings/general/something?test'))) + $router->route( + (new Request( + new Http('http://test.com/backends/admin/settings/general/something?test') + ))->getUri()->getRoute() + ) ); $router->add('^.*/backends/admin/settings/general.*$', 'Controller:test', RouteVerb::GET | RouteVerb::SET); self::assertEquals( [['dest' => 'Controller:test']], - $router->route(new Request(new Http('http://test.com/backends/admin/settings/general/something?test')), RouteVerb::ANY) + $router->route( + (new Request( + new Http('http://test.com/backends/admin/settings/general/something?test') + ))->getUri()->getRoute(), RouteVerb::ANY) ); self::assertEquals( [['dest' => 'Controller:test']], - $router->route(new Request(new Http('http://test.com/backends/admin/settings/general/something?test')), RouteVerb::SET) + $router->route( + (new Request( + new Http('http://test.com/backends/admin/settings/general/something?test') + ))->getUri()->getRoute(), RouteVerb::SET) ); self::assertEquals( [['dest' => 'Controller:test']], - $router->route(new Request(new Http('http://test.com/backends/admin/settings/general/something?test')), RouteVerb::GET) + $router->route( + (new Request( + new Http('http://test.com/backends/admin/settings/general/something?test')))->getUri()->getRoute(), RouteVerb::GET) ); } @@ -104,7 +127,7 @@ class RouterTest extends \PHPUnit\Framework\TestCase self::assertEquals( [['dest' => '\Modules\Admin\Controller:viewSettingsGeneral']], $router->route( - new Request(new Http('http://test.com/backend/admin/settings/general/something?test')), + (new Request(new Http('http://test.com/backend/admin/settings/general/something?test')))->getUri()->getRoute(), RouteVerb::GET, null, null, @@ -153,7 +176,7 @@ class RouterTest extends \PHPUnit\Framework\TestCase self::assertNotEquals( [['dest' => '\Modules\Admin\Controller:viewSettingsGeneral']], $router->route( - new Request(new Http('http://test.com/backend/admin/settings/general/something?test')), + (new Request(new Http('http://test.com/backend/admin/settings/general/something?test')))->getUri()->getRoute(), RouteVerb::GET, null, null,