From 6834b399f2696356da6b925657ead7dafbbd131c Mon Sep 17 00:00:00 2001 From: "Eric Richer eric.richer@vistoconsulting.com" Date: Wed, 7 Aug 2024 16:59:03 -0400 Subject: [PATCH 1/8] Integrated zfr/rbac into this source code and fixed deprecations. --- .github/workflows/build_test.yml | 4 +- composer.json | 13 ++-- .../Rbac/Permission/PermissionInterface.php | 28 ++++++++ zfr/src/Rbac/Rbac.php | 68 +++++++++++++++++++ zfr/src/Rbac/Role/HierarchicalRole.php | 47 +++++++++++++ .../Rbac/Role/HierarchicalRoleInterface.php | 34 ++++++++++ zfr/src/Rbac/Role/Role.php | 66 ++++++++++++++++++ zfr/src/Rbac/Role/RoleInterface.php | 33 +++++++++ .../Rbac/Traversal/RecursiveRoleIterator.php | 63 +++++++++++++++++ .../Traversal/Strategy/GeneratorStrategy.php | 43 ++++++++++++ .../RecursiveRoleIteratorStrategy.php | 32 +++++++++ .../Strategy/TraversalStrategyInterface.php | 25 +++++++ 12 files changed, 450 insertions(+), 6 deletions(-) create mode 100644 zfr/src/Rbac/Permission/PermissionInterface.php create mode 100644 zfr/src/Rbac/Rbac.php create mode 100644 zfr/src/Rbac/Role/HierarchicalRole.php create mode 100644 zfr/src/Rbac/Role/HierarchicalRoleInterface.php create mode 100644 zfr/src/Rbac/Role/Role.php create mode 100644 zfr/src/Rbac/Role/RoleInterface.php create mode 100644 zfr/src/Rbac/Traversal/RecursiveRoleIterator.php create mode 100644 zfr/src/Rbac/Traversal/Strategy/GeneratorStrategy.php create mode 100644 zfr/src/Rbac/Traversal/Strategy/RecursiveRoleIteratorStrategy.php create mode 100644 zfr/src/Rbac/Traversal/Strategy/TraversalStrategyInterface.php diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 3a136785..d1724d02 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -16,11 +16,11 @@ jobs: build: strategy: matrix: - php_version: ['8.0'] + php_version: ['8.0', '8.1', '8.2'] deps: ['--prefer-lowest --prefer-dist', ''] include: - code-coverage: 'yes' - php_version: '8.0' + php_version: '8.2' deps: '' runs-on: ubuntu-latest diff --git a/composer.json b/composer.json index 5ea0b202..9297b311 100644 --- a/composer.json +++ b/composer.json @@ -7,6 +7,7 @@ "module", "laminas", "rbac", + "zfr", "permissions" ], "homepage": "http://www.github.com/Laminas-Commons/LmcRbacMvc", @@ -24,15 +25,18 @@ { "name": "Jean-Marie Leroux", "email": "jmleroux.pro@gmail.com" + }, + { + "name": "Eric Richer", + "email": "eric.richer@vistoconsulting.com" } ], "require": { - "php": "^7.4 || ^8.0", + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0", "laminas/laminas-config": "^3.1", "laminas/laminas-eventmanager": "^3.0", "laminas/laminas-mvc": "^3.0", "laminas/laminas-servicemanager": "^3.0", - "zfr/rbac": "~1.2", "doctrine/persistence": "^2.1" }, "require-dev": { @@ -47,7 +51,7 @@ "squizlabs/php_codesniffer": "^3.5.5", "php-coveralls/php-coveralls": "^2.2", "phpspec/prophecy-phpunit": "^2.0", - "doctrine/doctrine-orm-module": "^4.1" + "doctrine/doctrine-orm-module": "^5.0" }, "suggest": { "laminas/laminas-developer-tools": "if you want to show information about the roles", @@ -58,7 +62,8 @@ }, "autoload": { "psr-4": { - "LmcRbacMvc\\": "src" + "LmcRbacMvc\\": "src", + "Rbac\\": "zfr/src/Rbac" } }, "autoload-dev": { diff --git a/zfr/src/Rbac/Permission/PermissionInterface.php b/zfr/src/Rbac/Permission/PermissionInterface.php new file mode 100644 index 00000000..e5e27a95 --- /dev/null +++ b/zfr/src/Rbac/Permission/PermissionInterface.php @@ -0,0 +1,28 @@ +traversalStrategy = $strategy; + } + + /** + * Determines if access is granted by checking the roles for permission. + * + * @param RoleInterface|RoleInterface[]|Traversable $roles + * @param mixed $permission + * @return bool + */ + public function isGranted($roles, $permission) + { + if ($roles instanceof RoleInterface) { + $roles = [$roles]; + } + + $iterator = $this->traversalStrategy->getRolesIterator($roles); + + foreach ($iterator as $role) { + /* @var RoleInterface $role */ + if ($role->hasPermission($permission)) { + return true; + } + } + + return false; + } + + /** + * Get the strategy. + * + * @return TraversalStrategyInterface + */ + public function getTraversalStrategy() + { + return $this->traversalStrategy; + } +} diff --git a/zfr/src/Rbac/Role/HierarchicalRole.php b/zfr/src/Rbac/Role/HierarchicalRole.php new file mode 100644 index 00000000..5ab2432b --- /dev/null +++ b/zfr/src/Rbac/Role/HierarchicalRole.php @@ -0,0 +1,47 @@ +children); + } + + /** + * {@inheritDoc} + */ + public function getChildren() + { + return $this->children; + } + + /** + * Add a child role + * + * @param RoleInterface $child + */ + public function addChild(RoleInterface $child) + { + $this->children[$child->getName()] = $child; + } +} diff --git a/zfr/src/Rbac/Role/HierarchicalRoleInterface.php b/zfr/src/Rbac/Role/HierarchicalRoleInterface.php new file mode 100644 index 00000000..9dbb5ead --- /dev/null +++ b/zfr/src/Rbac/Role/HierarchicalRoleInterface.php @@ -0,0 +1,34 @@ +name = (string) $name; + } + + /** + * {@inheritDoc} + */ + public function getName() + { + return $this->name; + } + + /** + * Add a permission + * + * @param string $permission + */ + public function addPermission($permission) + { + $this->permissions[(string) $permission] = $permission; + } + + /** + * Checks if a permission exists for this role + * + * @param string $permission + * @return bool + */ + public function hasPermission($permission) + { + return isset($this->permissions[(string) $permission]); + } +} diff --git a/zfr/src/Rbac/Role/RoleInterface.php b/zfr/src/Rbac/Role/RoleInterface.php new file mode 100644 index 00000000..04f23fd2 --- /dev/null +++ b/zfr/src/Rbac/Role/RoleInterface.php @@ -0,0 +1,33 @@ +current() instanceof RoleInterface; + } + + /** + * @return bool + */ + public function hasChildren(): bool + { + $current = $this->current(); + + if (!$current instanceof HierarchicalRoleInterface) { + return false; + } + + return $current->hasChildren(); + } + + /** + * @return RecursiveRoleIterator + */ + public function getChildren(): RecursiveRoleIterator + { + return new RecursiveRoleIterator($this->current()->getChildren()); + } +} diff --git a/zfr/src/Rbac/Traversal/Strategy/GeneratorStrategy.php b/zfr/src/Rbac/Traversal/Strategy/GeneratorStrategy.php new file mode 100644 index 00000000..63574f0d --- /dev/null +++ b/zfr/src/Rbac/Traversal/Strategy/GeneratorStrategy.php @@ -0,0 +1,43 @@ += 5.5 + */ +class GeneratorStrategy implements TraversalStrategyInterface +{ + /** + * @param RoleInterface[]|Traversable $roles + * @return Generator + */ + public function getRolesIterator($roles) + { + foreach ($roles as $role) { + yield $role; + + if (!$role instanceof HierarchicalRoleInterface) { + continue; + } + + $children = $this->getRolesIterator($role->getChildren()); + + foreach ($children as $child) { + yield $child; + } + } + } +} diff --git a/zfr/src/Rbac/Traversal/Strategy/RecursiveRoleIteratorStrategy.php b/zfr/src/Rbac/Traversal/Strategy/RecursiveRoleIteratorStrategy.php new file mode 100644 index 00000000..93b3a52e --- /dev/null +++ b/zfr/src/Rbac/Traversal/Strategy/RecursiveRoleIteratorStrategy.php @@ -0,0 +1,32 @@ + Date: Thu, 8 Aug 2024 10:58:13 -0400 Subject: [PATCH 2/8] Update Doctrine/Persistence dependency --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 9297b311..4dea3b05 100644 --- a/composer.json +++ b/composer.json @@ -37,7 +37,7 @@ "laminas/laminas-eventmanager": "^3.0", "laminas/laminas-mvc": "^3.0", "laminas/laminas-servicemanager": "^3.0", - "doctrine/persistence": "^2.1" + "doctrine/persistence": "^2.1 || ^3.0" }, "require-dev": { "laminas/laminas-authentication": "^2.2", From bae21b1d8653e28717ccbac3642059dbc2d5a968 Mon Sep 17 00:00:00 2001 From: "Eric Richer eric.richer@vistoconsulting.com" Date: Thu, 8 Aug 2024 20:20:45 -0400 Subject: [PATCH 3/8] Removed local copy of zfr --- .../Rbac/Permission/PermissionInterface.php | 28 -------- zfr/src/Rbac/Rbac.php | 68 ------------------- zfr/src/Rbac/Role/HierarchicalRole.php | 47 ------------- .../Rbac/Role/HierarchicalRoleInterface.php | 34 ---------- zfr/src/Rbac/Role/Role.php | 66 ------------------ zfr/src/Rbac/Role/RoleInterface.php | 33 --------- .../Rbac/Traversal/RecursiveRoleIterator.php | 63 ----------------- .../Traversal/Strategy/GeneratorStrategy.php | 43 ------------ .../RecursiveRoleIteratorStrategy.php | 32 --------- .../Strategy/TraversalStrategyInterface.php | 25 ------- 10 files changed, 439 deletions(-) delete mode 100644 zfr/src/Rbac/Permission/PermissionInterface.php delete mode 100644 zfr/src/Rbac/Rbac.php delete mode 100644 zfr/src/Rbac/Role/HierarchicalRole.php delete mode 100644 zfr/src/Rbac/Role/HierarchicalRoleInterface.php delete mode 100644 zfr/src/Rbac/Role/Role.php delete mode 100644 zfr/src/Rbac/Role/RoleInterface.php delete mode 100644 zfr/src/Rbac/Traversal/RecursiveRoleIterator.php delete mode 100644 zfr/src/Rbac/Traversal/Strategy/GeneratorStrategy.php delete mode 100644 zfr/src/Rbac/Traversal/Strategy/RecursiveRoleIteratorStrategy.php delete mode 100644 zfr/src/Rbac/Traversal/Strategy/TraversalStrategyInterface.php diff --git a/zfr/src/Rbac/Permission/PermissionInterface.php b/zfr/src/Rbac/Permission/PermissionInterface.php deleted file mode 100644 index e5e27a95..00000000 --- a/zfr/src/Rbac/Permission/PermissionInterface.php +++ /dev/null @@ -1,28 +0,0 @@ -traversalStrategy = $strategy; - } - - /** - * Determines if access is granted by checking the roles for permission. - * - * @param RoleInterface|RoleInterface[]|Traversable $roles - * @param mixed $permission - * @return bool - */ - public function isGranted($roles, $permission) - { - if ($roles instanceof RoleInterface) { - $roles = [$roles]; - } - - $iterator = $this->traversalStrategy->getRolesIterator($roles); - - foreach ($iterator as $role) { - /* @var RoleInterface $role */ - if ($role->hasPermission($permission)) { - return true; - } - } - - return false; - } - - /** - * Get the strategy. - * - * @return TraversalStrategyInterface - */ - public function getTraversalStrategy() - { - return $this->traversalStrategy; - } -} diff --git a/zfr/src/Rbac/Role/HierarchicalRole.php b/zfr/src/Rbac/Role/HierarchicalRole.php deleted file mode 100644 index 5ab2432b..00000000 --- a/zfr/src/Rbac/Role/HierarchicalRole.php +++ /dev/null @@ -1,47 +0,0 @@ -children); - } - - /** - * {@inheritDoc} - */ - public function getChildren() - { - return $this->children; - } - - /** - * Add a child role - * - * @param RoleInterface $child - */ - public function addChild(RoleInterface $child) - { - $this->children[$child->getName()] = $child; - } -} diff --git a/zfr/src/Rbac/Role/HierarchicalRoleInterface.php b/zfr/src/Rbac/Role/HierarchicalRoleInterface.php deleted file mode 100644 index 9dbb5ead..00000000 --- a/zfr/src/Rbac/Role/HierarchicalRoleInterface.php +++ /dev/null @@ -1,34 +0,0 @@ -name = (string) $name; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return $this->name; - } - - /** - * Add a permission - * - * @param string $permission - */ - public function addPermission($permission) - { - $this->permissions[(string) $permission] = $permission; - } - - /** - * Checks if a permission exists for this role - * - * @param string $permission - * @return bool - */ - public function hasPermission($permission) - { - return isset($this->permissions[(string) $permission]); - } -} diff --git a/zfr/src/Rbac/Role/RoleInterface.php b/zfr/src/Rbac/Role/RoleInterface.php deleted file mode 100644 index 04f23fd2..00000000 --- a/zfr/src/Rbac/Role/RoleInterface.php +++ /dev/null @@ -1,33 +0,0 @@ -current() instanceof RoleInterface; - } - - /** - * @return bool - */ - public function hasChildren(): bool - { - $current = $this->current(); - - if (!$current instanceof HierarchicalRoleInterface) { - return false; - } - - return $current->hasChildren(); - } - - /** - * @return RecursiveRoleIterator - */ - public function getChildren(): RecursiveRoleIterator - { - return new RecursiveRoleIterator($this->current()->getChildren()); - } -} diff --git a/zfr/src/Rbac/Traversal/Strategy/GeneratorStrategy.php b/zfr/src/Rbac/Traversal/Strategy/GeneratorStrategy.php deleted file mode 100644 index 63574f0d..00000000 --- a/zfr/src/Rbac/Traversal/Strategy/GeneratorStrategy.php +++ /dev/null @@ -1,43 +0,0 @@ -= 5.5 - */ -class GeneratorStrategy implements TraversalStrategyInterface -{ - /** - * @param RoleInterface[]|Traversable $roles - * @return Generator - */ - public function getRolesIterator($roles) - { - foreach ($roles as $role) { - yield $role; - - if (!$role instanceof HierarchicalRoleInterface) { - continue; - } - - $children = $this->getRolesIterator($role->getChildren()); - - foreach ($children as $child) { - yield $child; - } - } - } -} diff --git a/zfr/src/Rbac/Traversal/Strategy/RecursiveRoleIteratorStrategy.php b/zfr/src/Rbac/Traversal/Strategy/RecursiveRoleIteratorStrategy.php deleted file mode 100644 index 93b3a52e..00000000 --- a/zfr/src/Rbac/Traversal/Strategy/RecursiveRoleIteratorStrategy.php +++ /dev/null @@ -1,32 +0,0 @@ - Date: Thu, 8 Aug 2024 20:23:45 -0400 Subject: [PATCH 4/8] Added use of lmc-commons/rbac --- composer.json | 10 ++++++---- tests/Asset/FlatRole.php | 4 ++-- tests/Asset/HierarchicalRole.php | 2 +- tests/Asset/MockRoleWithPermissionMethod.php | 4 ++-- tests/Asset/MockRoleWithPermissionProperty.php | 4 ++-- tests/Asset/MockRoleWithPermissionTraversable.php | 4 ++-- tests/TestConfiguration.php.dist | 3 +++ 7 files changed, 18 insertions(+), 13 deletions(-) diff --git a/composer.json b/composer.json index 4dea3b05..d1ac77a3 100644 --- a/composer.json +++ b/composer.json @@ -32,15 +32,18 @@ } ], "require": { - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "laminas/laminas-config": "^3.1", "laminas/laminas-eventmanager": "^3.0", "laminas/laminas-mvc": "^3.0", "laminas/laminas-servicemanager": "^3.0", + "lm-commons/rbac": "1.2.0", "doctrine/persistence": "^2.1 || ^3.0" }, "require-dev": { "laminas/laminas-authentication": "^2.2", + "laminas/laminas-cache-storage-adapter-filesystem": "^2.0", + "laminas/laminas-cache-storage-adapter-memory": "^2.0", "laminas/laminas-developer-tools": "^2.1", "laminas/laminas-log": "^2.2", "laminas/laminas-http": "^2.2", @@ -51,7 +54,7 @@ "squizlabs/php_codesniffer": "^3.5.5", "php-coveralls/php-coveralls": "^2.2", "phpspec/prophecy-phpunit": "^2.0", - "doctrine/doctrine-orm-module": "^5.0" + "doctrine/doctrine-orm-module": "^5.0 || ^6.0" }, "suggest": { "laminas/laminas-developer-tools": "if you want to show information about the roles", @@ -62,8 +65,7 @@ }, "autoload": { "psr-4": { - "LmcRbacMvc\\": "src", - "Rbac\\": "zfr/src/Rbac" + "LmcRbacMvc\\": "src" } }, "autoload-dev": { diff --git a/tests/Asset/FlatRole.php b/tests/Asset/FlatRole.php index 85991060..40b9cd23 100644 --- a/tests/Asset/FlatRole.php +++ b/tests/Asset/FlatRole.php @@ -66,7 +66,7 @@ public function __construct($name) * * @return int */ - public function getId() + public function getId(): ?int { return $this->id; } @@ -77,7 +77,7 @@ public function getId() * @param PermissionInterface|string $permission * @return void */ - public function addPermission($permission) + public function addPermission($permission): void { if (is_string($permission)) { $name = $permission; diff --git a/tests/Asset/HierarchicalRole.php b/tests/Asset/HierarchicalRole.php index 3cd9f471..25d9fd27 100644 --- a/tests/Asset/HierarchicalRole.php +++ b/tests/Asset/HierarchicalRole.php @@ -84,7 +84,7 @@ public function getId() * @param PermissionInterface|string $permission * @return void */ - public function addPermission($permission) + public function addPermission($permission): void { if (is_string($permission)) { $name = $permission; diff --git a/tests/Asset/MockRoleWithPermissionMethod.php b/tests/Asset/MockRoleWithPermissionMethod.php index 8f4013c0..ea70fd66 100644 --- a/tests/Asset/MockRoleWithPermissionMethod.php +++ b/tests/Asset/MockRoleWithPermissionMethod.php @@ -11,11 +11,11 @@ public function getPermissions() return ['permission-method-a', 'permission-method-b']; } - public function getName() + public function getName(): string { return 'role-with-permission-method'; } - public function hasPermission($permission) + public function hasPermission($permission): bool { return false; } diff --git a/tests/Asset/MockRoleWithPermissionProperty.php b/tests/Asset/MockRoleWithPermissionProperty.php index ad757725..9a6df680 100644 --- a/tests/Asset/MockRoleWithPermissionProperty.php +++ b/tests/Asset/MockRoleWithPermissionProperty.php @@ -8,11 +8,11 @@ class MockRoleWithPermissionProperty implements RoleInterface { private $permissions = ['permission-property-a', 'permission-property-b']; - public function getName() + public function getName(): string { return 'role-with-permission-property'; } - public function hasPermission($permission) + public function hasPermission($permission): bool { return false; } diff --git a/tests/Asset/MockRoleWithPermissionTraversable.php b/tests/Asset/MockRoleWithPermissionTraversable.php index 07ac90e4..5f2c0f2e 100644 --- a/tests/Asset/MockRoleWithPermissionTraversable.php +++ b/tests/Asset/MockRoleWithPermissionTraversable.php @@ -13,11 +13,11 @@ public function getPermissions() return new \ArrayObject(['permission-method-a', 'permission-method-b']); } - public function getName() + public function getName(): string { return 'role-with-permission-traversable'; } - public function hasPermission($permission) + public function hasPermission($permission): bool { return false; } diff --git a/tests/TestConfiguration.php.dist b/tests/TestConfiguration.php.dist index feb4ebc3..a58e6406 100644 --- a/tests/TestConfiguration.php.dist +++ b/tests/TestConfiguration.php.dist @@ -18,6 +18,9 @@ return [ 'modules' => [ + 'Laminas\Cache', + 'Laminas\Cache\Storage\Adapter\Filesystem', + 'Laminas\Cache\Storage\Adapter\Memory', 'Laminas\Router', 'LmcRbacMvc', 'DoctrineModule', From 6617c29985dd0d835b7824cfb6788b937abd41cf Mon Sep 17 00:00:00 2001 From: "Eric Richer eric.richer@vistoconsulting.com" Date: Thu, 8 Aug 2024 20:23:45 -0400 Subject: [PATCH 5/8] Added use of lmc-commons/rbac --- composer.json | 10 ++++++---- tests/Asset/FlatRole.php | 4 ++-- tests/Asset/HierarchicalRole.php | 2 +- tests/Asset/MockRoleWithPermissionMethod.php | 4 ++-- tests/Asset/MockRoleWithPermissionProperty.php | 4 ++-- tests/Asset/MockRoleWithPermissionTraversable.php | 4 ++-- tests/TestConfiguration.php.dist | 3 +++ 7 files changed, 18 insertions(+), 13 deletions(-) diff --git a/composer.json b/composer.json index 4dea3b05..be364244 100644 --- a/composer.json +++ b/composer.json @@ -32,15 +32,18 @@ } ], "require": { - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "laminas/laminas-config": "^3.1", "laminas/laminas-eventmanager": "^3.0", "laminas/laminas-mvc": "^3.0", "laminas/laminas-servicemanager": "^3.0", + "lm-commons/rbac": "^1.2", "doctrine/persistence": "^2.1 || ^3.0" }, "require-dev": { "laminas/laminas-authentication": "^2.2", + "laminas/laminas-cache-storage-adapter-filesystem": "^2.0", + "laminas/laminas-cache-storage-adapter-memory": "^2.0", "laminas/laminas-developer-tools": "^2.1", "laminas/laminas-log": "^2.2", "laminas/laminas-http": "^2.2", @@ -51,7 +54,7 @@ "squizlabs/php_codesniffer": "^3.5.5", "php-coveralls/php-coveralls": "^2.2", "phpspec/prophecy-phpunit": "^2.0", - "doctrine/doctrine-orm-module": "^5.0" + "doctrine/doctrine-orm-module": "^5.0 || ^6.0" }, "suggest": { "laminas/laminas-developer-tools": "if you want to show information about the roles", @@ -62,8 +65,7 @@ }, "autoload": { "psr-4": { - "LmcRbacMvc\\": "src", - "Rbac\\": "zfr/src/Rbac" + "LmcRbacMvc\\": "src" } }, "autoload-dev": { diff --git a/tests/Asset/FlatRole.php b/tests/Asset/FlatRole.php index 85991060..40b9cd23 100644 --- a/tests/Asset/FlatRole.php +++ b/tests/Asset/FlatRole.php @@ -66,7 +66,7 @@ public function __construct($name) * * @return int */ - public function getId() + public function getId(): ?int { return $this->id; } @@ -77,7 +77,7 @@ public function getId() * @param PermissionInterface|string $permission * @return void */ - public function addPermission($permission) + public function addPermission($permission): void { if (is_string($permission)) { $name = $permission; diff --git a/tests/Asset/HierarchicalRole.php b/tests/Asset/HierarchicalRole.php index 3cd9f471..25d9fd27 100644 --- a/tests/Asset/HierarchicalRole.php +++ b/tests/Asset/HierarchicalRole.php @@ -84,7 +84,7 @@ public function getId() * @param PermissionInterface|string $permission * @return void */ - public function addPermission($permission) + public function addPermission($permission): void { if (is_string($permission)) { $name = $permission; diff --git a/tests/Asset/MockRoleWithPermissionMethod.php b/tests/Asset/MockRoleWithPermissionMethod.php index 8f4013c0..ea70fd66 100644 --- a/tests/Asset/MockRoleWithPermissionMethod.php +++ b/tests/Asset/MockRoleWithPermissionMethod.php @@ -11,11 +11,11 @@ public function getPermissions() return ['permission-method-a', 'permission-method-b']; } - public function getName() + public function getName(): string { return 'role-with-permission-method'; } - public function hasPermission($permission) + public function hasPermission($permission): bool { return false; } diff --git a/tests/Asset/MockRoleWithPermissionProperty.php b/tests/Asset/MockRoleWithPermissionProperty.php index ad757725..9a6df680 100644 --- a/tests/Asset/MockRoleWithPermissionProperty.php +++ b/tests/Asset/MockRoleWithPermissionProperty.php @@ -8,11 +8,11 @@ class MockRoleWithPermissionProperty implements RoleInterface { private $permissions = ['permission-property-a', 'permission-property-b']; - public function getName() + public function getName(): string { return 'role-with-permission-property'; } - public function hasPermission($permission) + public function hasPermission($permission): bool { return false; } diff --git a/tests/Asset/MockRoleWithPermissionTraversable.php b/tests/Asset/MockRoleWithPermissionTraversable.php index 07ac90e4..5f2c0f2e 100644 --- a/tests/Asset/MockRoleWithPermissionTraversable.php +++ b/tests/Asset/MockRoleWithPermissionTraversable.php @@ -13,11 +13,11 @@ public function getPermissions() return new \ArrayObject(['permission-method-a', 'permission-method-b']); } - public function getName() + public function getName(): string { return 'role-with-permission-traversable'; } - public function hasPermission($permission) + public function hasPermission($permission): bool { return false; } diff --git a/tests/TestConfiguration.php.dist b/tests/TestConfiguration.php.dist index feb4ebc3..a58e6406 100644 --- a/tests/TestConfiguration.php.dist +++ b/tests/TestConfiguration.php.dist @@ -18,6 +18,9 @@ return [ 'modules' => [ + 'Laminas\Cache', + 'Laminas\Cache\Storage\Adapter\Filesystem', + 'Laminas\Cache\Storage\Adapter\Memory', 'Laminas\Router', 'LmcRbacMvc', 'DoctrineModule', From c44ab1247f61272d52f3eab87faa3234cc7197ef Mon Sep 17 00:00:00 2001 From: "Eric Richer eric.richer@vistoconsulting.com" Date: Thu, 8 Aug 2024 20:28:41 -0400 Subject: [PATCH 6/8] Added testing for PHP 8.3 --- .github/workflows/build_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index d1724d02..5228be06 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -16,7 +16,7 @@ jobs: build: strategy: matrix: - php_version: ['8.0', '8.1', '8.2'] + php_version: ['8.0', '8.1', '8.2', '8.3'] deps: ['--prefer-lowest --prefer-dist', ''] include: - code-coverage: 'yes' From 98419b6a38485cb9c3bb5d0966972303728886d8 Mon Sep 17 00:00:00 2001 From: "Eric Richer eric.richer@vistoconsulting.com" Date: Thu, 8 Aug 2024 20:36:42 -0400 Subject: [PATCH 7/8] Updated docusaurus to 3.4.0 --- docs/package.json | 4 +- docs/yarn.lock | 387 +++++++++++++++++++++++++--------------------- 2 files changed, 211 insertions(+), 180 deletions(-) diff --git a/docs/package.json b/docs/package.json index 4ad1632a..abfa8287 100644 --- a/docs/package.json +++ b/docs/package.json @@ -14,8 +14,8 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "3.3.2", - "@docusaurus/preset-classic": "3.3.2", + "@docusaurus/core": "3.4.0", + "@docusaurus/preset-classic": "3.4.0", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", diff --git a/docs/yarn.lock b/docs/yarn.lock index f11b13f9..d9ff8b88 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -1948,10 +1948,10 @@ "@docsearch/css" "3.5.2" algoliasearch "^4.19.1" -"@docusaurus/core@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.3.2.tgz#67b8cd5329b32f47515ecf12eb7aa306dfc69922" - integrity sha512-PzKMydKI3IU1LmeZQDi+ut5RSuilbXnA8QdowGeJEgU8EJjmx3rBHNT1LxQxOVqNEwpWi/csLwd9bn7rUjggPA== +"@docusaurus/core@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.4.0.tgz#bdbf1af4b2f25d1bf4a5b62ec6137d84c821cb3c" + integrity sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w== dependencies: "@babel/core" "^7.23.3" "@babel/generator" "^7.23.3" @@ -1963,12 +1963,12 @@ "@babel/runtime" "^7.22.6" "@babel/runtime-corejs3" "^7.22.6" "@babel/traverse" "^7.22.8" - "@docusaurus/cssnano-preset" "3.3.2" - "@docusaurus/logger" "3.3.2" - "@docusaurus/mdx-loader" "3.3.2" - "@docusaurus/utils" "3.3.2" - "@docusaurus/utils-common" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" + "@docusaurus/cssnano-preset" "3.4.0" + "@docusaurus/logger" "3.4.0" + "@docusaurus/mdx-loader" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-common" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" autoprefixer "^10.4.14" babel-loader "^9.1.3" babel-plugin-dynamic-import-node "^2.3.3" @@ -2022,32 +2022,32 @@ webpack-merge "^5.9.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.3.2.tgz#fb971b3e89fe6821721782124b430b2795faeb38" - integrity sha512-+5+epLk/Rp4vFML4zmyTATNc3Is+buMAL6dNjrMWahdJCJlMWMPd/8YfU+2PA57t8mlSbhLJ7vAZVy54cd1vRQ== +"@docusaurus/cssnano-preset@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.4.0.tgz#dc7922b3bbeabcefc9b60d0161680d81cf72c368" + integrity sha512-qwLFSz6v/pZHy/UP32IrprmH5ORce86BGtN0eBtG75PpzQJAzp9gefspox+s8IEOr0oZKuQ/nhzZ3xwyc3jYJQ== dependencies: cssnano-preset-advanced "^6.1.2" postcss "^8.4.38" postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" -"@docusaurus/logger@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.3.2.tgz#f43f7e08d4f5403be6a7196659490053e248325f" - integrity sha512-Ldu38GJ4P8g4guN7d7pyCOJ7qQugG7RVyaxrK8OnxuTlaImvQw33aDRwaX2eNmX8YK6v+//Z502F4sOZbHHCHQ== +"@docusaurus/logger@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.4.0.tgz#8b0ac05c7f3dac2009066e2f964dee8209a77403" + integrity sha512-bZwkX+9SJ8lB9kVRkXw+xvHYSMGG4bpYHKGXeXFvyVc79NMeeBSGgzd4TQLHH+DYeOJoCdl8flrFJVxlZ0wo/Q== dependencies: chalk "^4.1.2" tslib "^2.6.0" -"@docusaurus/mdx-loader@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.3.2.tgz#424e3ffac8bcdeba27d8c0eb84a04736702fc187" - integrity sha512-AFRxj/aOk3/mfYDPxE3wTbrjeayVRvNSZP7mgMuUlrb2UlPRbSVAFX1k2RbgAJrnTSwMgb92m2BhJgYRfptN3g== +"@docusaurus/mdx-loader@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.4.0.tgz#483d7ab57928fdbb5c8bd1678098721a930fc5f6" + integrity sha512-kSSbrrk4nTjf4d+wtBA9H+FGauf2gCax89kV8SUSJu3qaTdSIKdWERlngsiHaCFgZ7laTJ8a67UFf+xlFPtuTw== dependencies: - "@docusaurus/logger" "3.3.2" - "@docusaurus/utils" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" + "@docusaurus/logger" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" "@mdx-js/mdx" "^3.0.0" "@slorber/remark-comment" "^1.0.0" escape-html "^1.0.3" @@ -2083,18 +2083,31 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@6.0.0" -"@docusaurus/plugin-content-blog@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.3.2.tgz#6496714b071447687ead1472e5756bfb1ae065d0" - integrity sha512-fJU+dmqp231LnwDJv+BHVWft8pcUS2xVPZdeYH6/ibH1s2wQ/sLcmUrGWyIv/Gq9Ptj8XWjRPMghlxghuPPoxg== +"@docusaurus/module-type-aliases@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz#2653bde58fc1aa3dbc626a6c08cfb63a37ae1bb8" + integrity sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw== dependencies: - "@docusaurus/core" "3.3.2" - "@docusaurus/logger" "3.3.2" - "@docusaurus/mdx-loader" "3.3.2" - "@docusaurus/types" "3.3.2" - "@docusaurus/utils" "3.3.2" - "@docusaurus/utils-common" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" + "@docusaurus/types" "3.4.0" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + react-helmet-async "*" + react-loadable "npm:@docusaurus/react-loadable@6.0.0" + +"@docusaurus/plugin-content-blog@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.4.0.tgz#6373632fdbababbda73a13c4a08f907d7de8f007" + integrity sha512-vv6ZAj78ibR5Jh7XBUT4ndIjmlAxkijM3Sx5MAAzC1gyv0vupDQNhzuFg1USQmQVj3P5I6bquk12etPV3LJ+Xw== + dependencies: + "@docusaurus/core" "3.4.0" + "@docusaurus/logger" "3.4.0" + "@docusaurus/mdx-loader" "3.4.0" + "@docusaurus/types" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-common" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" cheerio "^1.0.0-rc.12" feed "^4.2.2" fs-extra "^11.1.1" @@ -2106,19 +2119,19 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.3.2.tgz#dadfbb94acfb0b74fae12db51f425c4379e30087" - integrity sha512-Dm1ri2VlGATTN3VGk1ZRqdRXWa1UlFubjaEL6JaxaK7IIFqN/Esjpl+Xw10R33loHcRww/H76VdEeYayaL76eg== - dependencies: - "@docusaurus/core" "3.3.2" - "@docusaurus/logger" "3.3.2" - "@docusaurus/mdx-loader" "3.3.2" - "@docusaurus/module-type-aliases" "3.3.2" - "@docusaurus/types" "3.3.2" - "@docusaurus/utils" "3.3.2" - "@docusaurus/utils-common" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" +"@docusaurus/plugin-content-docs@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz#3088973f72169a2a6d533afccec7153c8720d332" + integrity sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg== + dependencies: + "@docusaurus/core" "3.4.0" + "@docusaurus/logger" "3.4.0" + "@docusaurus/mdx-loader" "3.4.0" + "@docusaurus/module-type-aliases" "3.4.0" + "@docusaurus/types" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-common" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" "@types/react-router-config" "^5.0.7" combine-promises "^1.1.0" fs-extra "^11.1.1" @@ -2128,114 +2141,114 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-pages@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.3.2.tgz#04fc18d1925618c1102b111b85e6376442c1b7a9" - integrity sha512-EKc9fQn5H2+OcGER8x1aR+7URtAGWySUgULfqE/M14+rIisdrBstuEZ4lUPDRrSIexOVClML82h2fDS+GSb8Ew== +"@docusaurus/plugin-content-pages@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.4.0.tgz#1846172ca0355c7d32a67ef8377750ce02bbb8ad" + integrity sha512-h2+VN/0JjpR8fIkDEAoadNjfR3oLzB+v1qSXbIAKjQ46JAHx3X22n9nqS+BWSQnTnp1AjkjSvZyJMekmcwxzxg== dependencies: - "@docusaurus/core" "3.3.2" - "@docusaurus/mdx-loader" "3.3.2" - "@docusaurus/types" "3.3.2" - "@docusaurus/utils" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" + "@docusaurus/core" "3.4.0" + "@docusaurus/mdx-loader" "3.4.0" + "@docusaurus/types" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" fs-extra "^11.1.1" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/plugin-debug@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.3.2.tgz#bb25fac2cb705eff7857b435219faef907ba949e" - integrity sha512-oBIBmwtaB+YS0XlmZ3gCO+cMbsGvIYuAKkAopoCh0arVjtlyPbejzPrHuCoRHB9G7abjNZw7zoONOR8+8LM5+Q== +"@docusaurus/plugin-debug@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.4.0.tgz#74e4ec5686fa314c26f3ac150bacadbba7f06948" + integrity sha512-uV7FDUNXGyDSD3PwUaf5YijX91T5/H9SX4ErEcshzwgzWwBtK37nUWPU3ZLJfeTavX3fycTOqk9TglpOLaWkCg== dependencies: - "@docusaurus/core" "3.3.2" - "@docusaurus/types" "3.3.2" - "@docusaurus/utils" "3.3.2" + "@docusaurus/core" "3.4.0" + "@docusaurus/types" "3.4.0" + "@docusaurus/utils" "3.4.0" fs-extra "^11.1.1" react-json-view-lite "^1.2.0" tslib "^2.6.0" -"@docusaurus/plugin-google-analytics@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.3.2.tgz#6e51ee8593c79172ed2b2ac4d33e300f04bfbc87" - integrity sha512-jXhrEIhYPSClMBK6/IA8qf1/FBoxqGXZvg7EuBax9HaK9+kL3L0TJIlatd8jQJOMtds8mKw806TOCc3rtEad1A== +"@docusaurus/plugin-google-analytics@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.4.0.tgz#5f59fc25329a59decc231936f6f9fb5663da3c55" + integrity sha512-mCArluxEGi3cmYHqsgpGGt3IyLCrFBxPsxNZ56Mpur0xSlInnIHoeLDH7FvVVcPJRPSQ9/MfRqLsainRw+BojA== dependencies: - "@docusaurus/core" "3.3.2" - "@docusaurus/types" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" + "@docusaurus/core" "3.4.0" + "@docusaurus/types" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" tslib "^2.6.0" -"@docusaurus/plugin-google-gtag@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.3.2.tgz#f8126dfe1dfa6e722157d7301430da40b97354ba" - integrity sha512-vcrKOHGbIDjVnNMrfbNpRQR1x6Jvcrb48kVzpBAOsKbj9rXZm/idjVAXRaewwobHdOrJkfWS/UJoxzK8wyLRBQ== +"@docusaurus/plugin-google-gtag@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.4.0.tgz#42489ac5fe1c83b5523ceedd5ef74f9aa8bc251b" + integrity sha512-Dsgg6PLAqzZw5wZ4QjUYc8Z2KqJqXxHxq3vIoyoBWiLEEfigIs7wHR+oiWUQy3Zk9MIk6JTYj7tMoQU0Jm3nqA== dependencies: - "@docusaurus/core" "3.3.2" - "@docusaurus/types" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" + "@docusaurus/core" "3.4.0" + "@docusaurus/types" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" "@types/gtag.js" "^0.0.12" tslib "^2.6.0" -"@docusaurus/plugin-google-tag-manager@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.3.2.tgz#7ce4cf4da6ef177d63bd83beafc4a45428ff01e2" - integrity sha512-ldkR58Fdeks0vC+HQ+L+bGFSJsotQsipXD+iKXQFvkOfmPIV6QbHRd7IIcm5b6UtwOiK33PylNS++gjyLUmaGw== +"@docusaurus/plugin-google-tag-manager@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.4.0.tgz#cebb03a5ffa1e70b37d95601442babea251329ff" + integrity sha512-O9tX1BTwxIhgXpOLpFDueYA9DWk69WCbDRrjYoMQtFHSkTyE7RhNgyjSPREUWJb9i+YUg3OrsvrBYRl64FCPCQ== dependencies: - "@docusaurus/core" "3.3.2" - "@docusaurus/types" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" + "@docusaurus/core" "3.4.0" + "@docusaurus/types" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" tslib "^2.6.0" -"@docusaurus/plugin-sitemap@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.3.2.tgz#f64fba6f03ebc14fdf55434aa2219bf80f752a13" - integrity sha512-/ZI1+bwZBhAgC30inBsHe3qY9LOZS+79fRGkNdTcGHRMcdAp6Vw2pCd1gzlxd/xU+HXsNP6cLmTOrggmRp3Ujg== - dependencies: - "@docusaurus/core" "3.3.2" - "@docusaurus/logger" "3.3.2" - "@docusaurus/types" "3.3.2" - "@docusaurus/utils" "3.3.2" - "@docusaurus/utils-common" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" +"@docusaurus/plugin-sitemap@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.4.0.tgz#b091d64d1e3c6c872050189999580187537bcbc6" + integrity sha512-+0VDvx9SmNrFNgwPoeoCha+tRoAjopwT0+pYO1xAbyLcewXSemq+eLxEa46Q1/aoOaJQ0qqHELuQM7iS2gp33Q== + dependencies: + "@docusaurus/core" "3.4.0" + "@docusaurus/logger" "3.4.0" + "@docusaurus/types" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-common" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" fs-extra "^11.1.1" sitemap "^7.1.1" tslib "^2.6.0" -"@docusaurus/preset-classic@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.3.2.tgz#1c89b5f35f9e727a1c91bc03eb25a5b42b7d67a6" - integrity sha512-1SDS7YIUN1Pg3BmD6TOTjhB7RSBHJRpgIRKx9TpxqyDrJ92sqtZhomDc6UYoMMLQNF2wHFZZVGFjxJhw2VpL+Q== - dependencies: - "@docusaurus/core" "3.3.2" - "@docusaurus/plugin-content-blog" "3.3.2" - "@docusaurus/plugin-content-docs" "3.3.2" - "@docusaurus/plugin-content-pages" "3.3.2" - "@docusaurus/plugin-debug" "3.3.2" - "@docusaurus/plugin-google-analytics" "3.3.2" - "@docusaurus/plugin-google-gtag" "3.3.2" - "@docusaurus/plugin-google-tag-manager" "3.3.2" - "@docusaurus/plugin-sitemap" "3.3.2" - "@docusaurus/theme-classic" "3.3.2" - "@docusaurus/theme-common" "3.3.2" - "@docusaurus/theme-search-algolia" "3.3.2" - "@docusaurus/types" "3.3.2" - -"@docusaurus/theme-classic@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.3.2.tgz#44489580e034a6f5b877ec8bfd1203e226b4a4ab" - integrity sha512-gepHFcsluIkPb4Im9ukkiO4lXrai671wzS3cKQkY9BXQgdVwsdPf/KS0Vs4Xlb0F10fTz+T3gNjkxNEgSN9M0A== - dependencies: - "@docusaurus/core" "3.3.2" - "@docusaurus/mdx-loader" "3.3.2" - "@docusaurus/module-type-aliases" "3.3.2" - "@docusaurus/plugin-content-blog" "3.3.2" - "@docusaurus/plugin-content-docs" "3.3.2" - "@docusaurus/plugin-content-pages" "3.3.2" - "@docusaurus/theme-common" "3.3.2" - "@docusaurus/theme-translations" "3.3.2" - "@docusaurus/types" "3.3.2" - "@docusaurus/utils" "3.3.2" - "@docusaurus/utils-common" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" +"@docusaurus/preset-classic@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.4.0.tgz#6082a32fbb465b0cb2c2a50ebfc277cff2c0f139" + integrity sha512-Ohj6KB7siKqZaQhNJVMBBUzT3Nnp6eTKqO+FXO3qu/n1hJl3YLwVKTWBg28LF7MWrKu46UuYavwMRxud0VyqHg== + dependencies: + "@docusaurus/core" "3.4.0" + "@docusaurus/plugin-content-blog" "3.4.0" + "@docusaurus/plugin-content-docs" "3.4.0" + "@docusaurus/plugin-content-pages" "3.4.0" + "@docusaurus/plugin-debug" "3.4.0" + "@docusaurus/plugin-google-analytics" "3.4.0" + "@docusaurus/plugin-google-gtag" "3.4.0" + "@docusaurus/plugin-google-tag-manager" "3.4.0" + "@docusaurus/plugin-sitemap" "3.4.0" + "@docusaurus/theme-classic" "3.4.0" + "@docusaurus/theme-common" "3.4.0" + "@docusaurus/theme-search-algolia" "3.4.0" + "@docusaurus/types" "3.4.0" + +"@docusaurus/theme-classic@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.4.0.tgz#1b0f48edec3e3ec8927843554b9f11e5927b0e52" + integrity sha512-0IPtmxsBYv2adr1GnZRdMkEQt1YW6tpzrUPj02YxNpvJ5+ju4E13J5tB4nfdaen/tfR1hmpSPlTFPvTf4kwy8Q== + dependencies: + "@docusaurus/core" "3.4.0" + "@docusaurus/mdx-loader" "3.4.0" + "@docusaurus/module-type-aliases" "3.4.0" + "@docusaurus/plugin-content-blog" "3.4.0" + "@docusaurus/plugin-content-docs" "3.4.0" + "@docusaurus/plugin-content-pages" "3.4.0" + "@docusaurus/theme-common" "3.4.0" + "@docusaurus/theme-translations" "3.4.0" + "@docusaurus/types" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-common" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" "@mdx-js/react" "^3.0.0" clsx "^2.0.0" copy-text-to-clipboard "^3.2.0" @@ -2250,18 +2263,18 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-common@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.3.2.tgz#26f8a6d26ea6c297350887f614c6dac73c2ede4a" - integrity sha512-kXqSaL/sQqo4uAMQ4fHnvRZrH45Xz2OdJ3ABXDS7YVGPSDTBC8cLebFrRR4YF9EowUHto1UC/EIklJZQMG/usA== - dependencies: - "@docusaurus/mdx-loader" "3.3.2" - "@docusaurus/module-type-aliases" "3.3.2" - "@docusaurus/plugin-content-blog" "3.3.2" - "@docusaurus/plugin-content-docs" "3.3.2" - "@docusaurus/plugin-content-pages" "3.3.2" - "@docusaurus/utils" "3.3.2" - "@docusaurus/utils-common" "3.3.2" +"@docusaurus/theme-common@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.4.0.tgz#01f2b728de6cb57f6443f52fc30675cf12a5d49f" + integrity sha512-0A27alXuv7ZdCg28oPE8nH/Iz73/IUejVaCazqu9elS4ypjiLhK3KfzdSQBnL/g7YfHSlymZKdiOHEo8fJ0qMA== + dependencies: + "@docusaurus/mdx-loader" "3.4.0" + "@docusaurus/module-type-aliases" "3.4.0" + "@docusaurus/plugin-content-blog" "3.4.0" + "@docusaurus/plugin-content-docs" "3.4.0" + "@docusaurus/plugin-content-pages" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-common" "3.4.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -2271,19 +2284,19 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.3.2.tgz#fe669e756697a2ca79784052e26c43a07ea7e449" - integrity sha512-qLkfCl29VNBnF1MWiL9IyOQaHxUvicZp69hISyq/xMsNvFKHFOaOfk9xezYod2Q9xx3xxUh9t/QPigIei2tX4w== +"@docusaurus/theme-search-algolia@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.4.0.tgz#c499bad71d668df0d0f15b0e5e33e2fc4e330fcc" + integrity sha512-aiHFx7OCw4Wck1z6IoShVdUWIjntC8FHCw9c5dR8r3q4Ynh+zkS8y2eFFunN/DL6RXPzpnvKCg3vhLQYJDmT9Q== dependencies: "@docsearch/react" "^3.5.2" - "@docusaurus/core" "3.3.2" - "@docusaurus/logger" "3.3.2" - "@docusaurus/plugin-content-docs" "3.3.2" - "@docusaurus/theme-common" "3.3.2" - "@docusaurus/theme-translations" "3.3.2" - "@docusaurus/utils" "3.3.2" - "@docusaurus/utils-validation" "3.3.2" + "@docusaurus/core" "3.4.0" + "@docusaurus/logger" "3.4.0" + "@docusaurus/plugin-content-docs" "3.4.0" + "@docusaurus/theme-common" "3.4.0" + "@docusaurus/theme-translations" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" algoliasearch "^4.18.0" algoliasearch-helper "^3.13.3" clsx "^2.0.0" @@ -2293,10 +2306,10 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.3.2.tgz#39ad011573ce963f1eda98ded925971ca57c5a52" - integrity sha512-bPuiUG7Z8sNpGuTdGnmKl/oIPeTwKr0AXLGu9KaP6+UFfRZiyWbWE87ti97RrevB2ffojEdvchNujparR3jEZQ== +"@docusaurus/theme-translations@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz#e6355d01352886c67e38e848b2542582ea3070af" + integrity sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg== dependencies: fs-extra "^11.1.1" tslib "^2.6.0" @@ -2316,32 +2329,49 @@ webpack "^5.88.1" webpack-merge "^5.9.0" -"@docusaurus/utils-common@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.3.2.tgz#d17868a55a25186bfdb35de317a3878e867f2005" - integrity sha512-QWFTLEkPYsejJsLStgtmetMFIA3pM8EPexcZ4WZ7b++gO5jGVH7zsipREnCHzk6+eDgeaXfkR6UPaTt86bp8Og== +"@docusaurus/types@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.4.0.tgz#237c3f737e9db3f7c1a5935a3ef48d6eadde8292" + integrity sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A== + dependencies: + "@mdx-js/mdx" "^3.0.0" + "@types/history" "^4.7.11" + "@types/react" "*" + commander "^5.1.0" + joi "^17.9.2" + react-helmet-async "^1.3.0" + utility-types "^3.10.0" + webpack "^5.88.1" + webpack-merge "^5.9.0" + +"@docusaurus/utils-common@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.4.0.tgz#2a43fefd35b85ab9fcc6833187e66c15f8bfbbc6" + integrity sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ== dependencies: tslib "^2.6.0" -"@docusaurus/utils-validation@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.3.2.tgz#7109888d9c9b23eec787b41341809438f54c2aec" - integrity sha512-itDgFs5+cbW9REuC7NdXals4V6++KifgVMzoGOOOSIifBQw+8ULhy86u5e1lnptVL0sv8oAjq2alO7I40GR7pA== +"@docusaurus/utils-validation@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz#0176f6e503ff45f4390ec2ecb69550f55e0b5eb7" + integrity sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g== dependencies: - "@docusaurus/logger" "3.3.2" - "@docusaurus/utils" "3.3.2" - "@docusaurus/utils-common" "3.3.2" + "@docusaurus/logger" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-common" "3.4.0" + fs-extra "^11.2.0" joi "^17.9.2" js-yaml "^4.1.0" + lodash "^4.17.21" tslib "^2.6.0" -"@docusaurus/utils@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.3.2.tgz#2571baccb5b7ed53d50b670094139a31a53558df" - integrity sha512-f4YMnBVymtkSxONv4Y8js3Gez9IgHX+Lcg6YRMOjVbq8sgCcdYK1lf6SObAuz5qB/mxiSK7tW0M9aaiIaUSUJg== +"@docusaurus/utils@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.4.0.tgz#c508e20627b7a55e2b541e4a28c95e0637d6a204" + integrity sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g== dependencies: - "@docusaurus/logger" "3.3.2" - "@docusaurus/utils-common" "3.3.2" + "@docusaurus/logger" "3.4.0" + "@docusaurus/utils-common" "3.4.0" "@svgr/webpack" "^8.1.0" escape-string-regexp "^4.0.0" file-loader "^6.2.0" @@ -2358,6 +2388,7 @@ shelljs "^0.8.5" tslib "^2.6.0" url-loader "^4.1.1" + utility-types "^3.10.0" webpack "^5.88.1" "@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": @@ -4901,7 +4932,7 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-extra@^11.1.1: +fs-extra@^11.1.1, fs-extra@^11.2.0: version "11.2.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== From d631282729faf828a6cbdd3368ae17ea11428e81 Mon Sep 17 00:00:00 2001 From: "Eric Richer eric.richer@vistoconsulting.com" Date: Thu, 8 Aug 2024 20:38:12 -0400 Subject: [PATCH 8/8] Updated installation.md --- docs/docs/installation.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/installation.md b/docs/docs/installation.md index 25997811..6691a290 100644 --- a/docs/docs/installation.md +++ b/docs/docs/installation.md @@ -5,8 +5,8 @@ sidebar_label: Requirements and Installation # Requirements and Installation ## Requirements -- PHP 7.4 or higher -- [Zf-fr/Rbac component v1](https://github.com/zf-fr/rbac): this is actually a prototype for the ZF3 Rbac component. +- PHP 8.0 or higher +- [lm-commons/rbac component v1](https://github.com/zf-fr/rbac): this is actually a prototype for the ZF3 Rbac component. - [Laminas Components 2.x | 3.x or higher](http://www.github.com/laminas) @@ -37,6 +37,6 @@ LmcRbacMvc introduces breaking changes from zfcrbac v2: - [BC] The namespace has been changed from `ZfcRbac` to `LmcRbacMvc`. - [BC] The key `zfc_rbac` in autoload and module config files has been replaced by the `lmc_rbac` key. -- Requires PHP 7.4 or later +- Requires PHP 8.0 or later - Requires Laminas MVC components 3.x or later - Uses PSR-4 autoload