mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-26 19:58:53 +02:00
Fixed permissions fixtures loading.
This commit is contained in:
parent
adde39de9f
commit
960dbdf6f6
2 changed files with 26 additions and 121 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue