Better logged in user handling (Flex)

This commit is contained in:
Matias Griese
2020-01-21 09:46:42 +02:00
parent 5b9cc3b6da
commit 3c74b219fe
3 changed files with 19 additions and 12 deletions

View File

@@ -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

View File

@@ -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");

View File

@@ -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);
}