Fixed permissions fixtures loading.

This commit is contained in:
Jan Böhmer 2022-11-27 16:11:20 +01:00
parent adde39de9f
commit 960dbdf6f6
2 changed files with 26 additions and 121 deletions

View file

@ -43,6 +43,7 @@ declare(strict_types=1);
namespace App\DataFixtures;
use App\Entity\UserSystem\Group;
use App\Services\UserSystem\PermissionPresetsHelper;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
@ -52,135 +53,32 @@ class GroupFixtures extends Fixture
public const USERS = 'group-users';
public const READONLY = 'group-readonly';
private PermissionPresetsHelper $permission_presets;
public function __construct(PermissionPresetsHelper $permissionPresetsHelper)
{
$this->permission_presets = $permissionPresetsHelper;
}
public function load(ObjectManager $manager): void
{
$admins = new Group();
$admins->setName('admins');
//Perm values taken from Version 1
$admins->getPermissions()->setRawPermissionValues([
'system' => 21,
'groups' => 1365,
'users' => 87381,
'self' => 85,
'config' => 85,
'database' => 21,
'parts' => 1431655765,
'parts_name' => 5,
'parts_description' => 5,
'parts_footprint' => 5,
'parts_manufacturer' => 5,
'parts_comment' => 5,
'parts_order' => 5,
'parts_orderdetails' => 341,
'parts_prices' => 341,
'parts_attachments' => 341,
'devices' => 5461,
'devices_parts' => 325,
'storelocations' => 5461,
'footprints' => 5461,
'categories' => 5461,
'suppliers' => 5461,
'manufacturers' => 5461,
'attachment_types' => 1365,
'tools' => 349525,
'labels' => 87381,
'parts_category' => 5,
'parts_minamount' => 5,
'parts_lots' => 85,
'parts_tags' => 5,
'parts_unit' => 5,
'parts_mass' => 5,
'parts_status' => 5,
'parts_mpn' => 5,
'currencies' => 5461,
'measurement_units' => 5461,
]);
//Set permissions using preset
$this->permission_presets->applyPreset($admins, PermissionPresetsHelper::PRESET_ADMIN);
$this->setReference(self::ADMINS, $admins);
$manager->persist($admins);
$readonly = new Group();
$readonly->setName('readonly');
$readonly->getPermissions()->setRawPermissionValues([
'system' => 2,
'groups' => 2730,
'users' => 43690,
'self' => 25,
'config' => 170,
'database' => 42,
'parts' => 2778027689,
'parts_name' => 9,
'parts_description' => 9,
'parts_footprint' => 9,
'parts_manufacturer' => 9,
'parts_comment' => 9,
'parts_order' => 9,
'parts_orderdetails' => 681,
'parts_prices' => 681,
'parts_attachments' => 681,
'devices' => 1705,
'devices_parts' => 649,
'storelocations' => 1705,
'footprints' => 1705,
'categories' => 1705,
'suppliers' => 1705,
'manufacturers' => 1705,
'attachment_types' => 681,
'tools' => 87382,
'labels' => 173737,
'parts_category' => 9,
'parts_minamount' => 9,
'parts_lots' => 169,
'parts_tags' => 9,
'parts_unit' => 9,
'parts_mass' => 9,
'parts_status' => 9,
'parts_mpn' => 9,
'currencies' => 9897,
'measurement_units' => 9897,
]);
$this->permission_presets->applyPreset($readonly, PermissionPresetsHelper::PRESET_READ_ONLY);
$this->setReference(self::READONLY, $readonly);
$manager->persist($readonly);
$users = new Group();
$users->setName('users');
$users->getPermissions()->setRawPermissionValues([
'system' => 42,
'groups' => 2730,
'users' => 43690,
'self' => 89,
'config' => 105,
'database' => 41,
'parts' => 1431655765,
'parts_name' => 5,
'parts_description' => 5,
'parts_footprint' => 5,
'parts_manufacturer' => 5,
'parts_comment' => 5,
'parts_order' => 5,
'parts_orderdetails' => 341,
'parts_prices' => 341,
'parts_attachments' => 341,
'devices' => 5461,
'devices_parts' => 325,
'storelocations' => 5461,
'footprints' => 5461,
'categories' => 5461,
'suppliers' => 5461,
'manufacturers' => 5461,
'attachment_types' => 1365,
'tools' => 87381,
'labels' => 91477,
'parts_category' => 5,
'parts_minamount' => 5,
'parts_lots' => 85,
'parts_tags' => 5,
'parts_unit' => 5,
'parts_mass' => 5,
'parts_status' => 5,
'parts_mpn' => 5,
'currencies' => 5461,
'measurement_units' => 5461,
]);
$this->permission_presets->applyPreset($users, PermissionPresetsHelper::PRESET_EDITOR);
$this->setReference(self::USERS, $users);
$manager->persist($users);

View file

@ -7,6 +7,13 @@ use App\Security\Interfaces\HasPermissionsInterface;
class PermissionPresetsHelper
{
public const PRESET_ALL_INHERIT = 'all_inherit';
public const PRESET_ALL_FORBID = 'all_forbid';
public const PRESET_ALL_ALLOW = 'all_allow';
public const PRESET_READ_ONLY = 'read_only';
public const PRESET_EDITOR = 'editor';
public const PRESET_ADMIN = 'admin';
private PermissionManager $permissionResolver;
public function __construct(PermissionManager $permissionResolver)
@ -28,22 +35,22 @@ class PermissionPresetsHelper
$perm_holder->getPermissions()->resetPermissions();
switch($preset_name) {
case 'all_inherit':
case self::PRESET_ALL_INHERIT:
//Do nothing, all values are inherit after reset
break;
case 'all_forbid':
case self::PRESET_ALL_FORBID:
$this->allForbid($perm_holder);
break;
case 'all_allow':
case self::PRESET_ALL_ALLOW:
$this->allAllow($perm_holder);
break;
case 'read_only':
case self::PRESET_READ_ONLY:
$this->readOnly($perm_holder);
break;
case 'editor':
case self::PRESET_EDITOR:
$this->editor($perm_holder);
break;
case 'admin':
case self::PRESET_ADMIN:
$this->admin($perm_holder);
break;