diff --git a/src/DataFixtures/GroupFixtures.php b/src/DataFixtures/GroupFixtures.php index c17bccdf..2f66e001 100644 --- a/src/DataFixtures/GroupFixtures.php +++ b/src/DataFixtures/GroupFixtures.php @@ -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); diff --git a/src/Services/UserSystem/PermissionPresetsHelper.php b/src/Services/UserSystem/PermissionPresetsHelper.php index b73164bc..6dcbe8a2 100644 --- a/src/Services/UserSystem/PermissionPresetsHelper.php +++ b/src/Services/UserSystem/PermissionPresetsHelper.php @@ -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;