diff --git a/CHANGELOG.md b/CHANGELOG.md index da172884..c5181d24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,8 @@ 1. [](#new) * Updated `permissions` field to use new `$grav['permissions']` - * DEPRECATED `onAdminRegisterPermissions` event, use `RegisterPermissionsEvent::class` event instead - * DEPRECATED `Admin::setPermissions()` and `Admin::addPermissions()`, use `RegisterPermissionsEvent::class` event instead + * DEPRECATED `onAdminRegisterPermissions` event, use `PermissionsRegisterEvent::class` event instead + * DEPRECATED `Admin::setPermissions()` and `Admin::addPermissions()`, use `PermissionsRegisterEvent::class` event instead * DEPRECATED `Admin::getPermissions()`, use `$grav['permissions']->getInstances()` instead * [](#improved) * Added `field.show_label` and `field.label` display logic from frontend forms diff --git a/admin.php b/admin.php index 202ba7da..dd355c2f 100644 --- a/admin.php +++ b/admin.php @@ -18,7 +18,7 @@ use Grav\Common\Session; use Grav\Common\Uri; use Grav\Common\User\Interfaces\UserCollectionInterface; use Grav\Common\Utils; -use Grav\Events\RegisterPermissionsEvent; +use Grav\Events\PermissionsRegisterEvent; use Grav\Framework\Acl\PermissionsReader; use Grav\Framework\Psr7\Response; use Grav\Framework\Session\Exceptions\SessionException; @@ -91,7 +91,7 @@ class AdminPlugin extends Plugin 'onShutdown' => ['onShutdown', 1000], 'onAdminDashboard' => ['onAdminDashboard', 0], 'onAdminTools' => ['onAdminTools', 0], - RegisterPermissionsEvent::class => ['onRegisterPermissions', 1000], + PermissionsRegisterEvent::class => ['onRegisterPermissions', 1000], ]; } @@ -726,9 +726,9 @@ class AdminPlugin extends Plugin /** * Initial stab at registering permissions (WIP) * - * @param RegisterPermissionsEvent $event + * @param PermissionsRegisterEvent $event */ - public function onRegisterPermissions(RegisterPermissionsEvent $event): void + public function onRegisterPermissions(PermissionsRegisterEvent $event): void { $actions = PermissionsReader::fromYaml("plugin://{$this->name}/permissions.yaml"); diff --git a/classes/plugin/Admin.php b/classes/plugin/Admin.php index d0b24d4d..fa189ba1 100644 --- a/classes/plugin/Admin.php +++ b/classes/plugin/Admin.php @@ -6,6 +6,7 @@ use DateTime; use Grav\Common\Data; use Grav\Common\Data\Data as GravData; use Grav\Common\File\CompiledYamlFile; +use Grav\Common\Flex\Users\UserObject; use Grav\Common\GPM\GPM; use Grav\Common\GPM\Licenses; use Grav\Common\GPM\Response; @@ -30,6 +31,7 @@ use Grav\Framework\Acl\Action; use Grav\Framework\Acl\Permissions; use Grav\Framework\Collection\ArrayCollection; use Grav\Framework\Flex\Flex; +use Grav\Framework\Flex\Interfaces\FlexInterface; use Grav\Framework\Flex\Interfaces\FlexObjectInterface; use Grav\Framework\Route\Route; use Grav\Framework\Route\RouteFactory; @@ -136,16 +138,21 @@ class Admin $this->uri = $grav['uri']; $this->session = $grav['session']; - /** @var Flex|null $flex */ + /** @var FlexInterface|null $flex */ $flex = $grav['flex_objects'] ?? null; /** @var UserInterface $user */ $user = $grav['user']; if ($flex && !$user instanceof FlexObjectInterface) { - $directory = $flex->getDirectory('grav-accounts'); - if ($directory) { - $user = $directory->getObject($user->username) ?? $user; + $managed = !method_exists($flex, 'isManaged') || $flex->isManaged('grav-accounts'); + $directory = $managed ? $flex->getDirectory('grav-accounts') : null; + /** @var UserObject|null $test */ + $test = $directory ? $directory->getObject($user->username) : null; + if ($test) { + $test->authenticated = $user->authenticated; + $test->authorized = $user->authorized; + $user = $test; } } $this->user = $user; @@ -1459,11 +1466,11 @@ class Admin * Sets the entire permissions array * * @param array $permissions - * @deprecated 1.10 Use RegisterPermissionsEvent::class event instead. + * @deprecated 1.10 Use PermissionsRegisterEvent::class event instead. */ public function setPermissions($permissions) { - user_error(__METHOD__ . '() is deprecated since Admin 1.10, use RegisterPermissionsEvent::class event instead', E_USER_DEPRECATED); + user_error(__METHOD__ . '() is deprecated since Admin 1.10, use PermissionsRegisterEvent::class event instead', E_USER_DEPRECATED); $this->addPermissions($permissions); }