From f3872e066520b7b180c089c258cbce924e835030 Mon Sep 17 00:00:00 2001 From: Sholahuddin Al Ayubi Date: Wed, 3 Dec 2025 18:28:51 +0700 Subject: [PATCH] feat(usermanagement): fix permission seeder structure and ensure module column populated correctly - Updated PermissionGroupSeeder to seed consistent permission group definitions - Updated PermissionsSeeder to generate proper permission records with correct module mapping - Ensured permission creation uses dynamically generated module value based on group name - Fixed undefined array key "module" issue by restructuring data() output - Applied permission assignment to all roles for each generated permission - Improved overall seeder stability and idempotency To apply the updates, run the following commands: php artisan module:seed Usermanagement --class="PermissionGroupSeeder" php artisan module:seed Usermanagement --class="PermissionsSeeder" --- database/seeders/PermissionGroupSeeder.php | 4 + database/seeders/PermissionsSeeder.php | 106 ++++++++++----------- 2 files changed, 56 insertions(+), 54 deletions(-) diff --git a/database/seeders/PermissionGroupSeeder.php b/database/seeders/PermissionGroupSeeder.php index 7037dec..f8dc978 100644 --- a/database/seeders/PermissionGroupSeeder.php +++ b/database/seeders/PermissionGroupSeeder.php @@ -28,6 +28,10 @@ public function data() { return [ + ['name' => 'adk'], + ['name' => 'basicdata'], + ['name' => 'location'], + ['name' => 'logs'], ['name' => 'usermanagement'] ]; } diff --git a/database/seeders/PermissionsSeeder.php b/database/seeders/PermissionsSeeder.php index 125eb8f..7201c12 100644 --- a/database/seeders/PermissionsSeeder.php +++ b/database/seeders/PermissionsSeeder.php @@ -1,65 +1,63 @@ data(); + $data = $this->data(); - foreach ($data as $value) { - $permission = Permission::updateOrCreate([ - 'name' => $value['name'], - 'guard_name' => 'web' // or 'api - ], [ - 'permission_group_id' => $value['group'] - ]); + foreach ($data as $value) { - $roles = Role::all(); - foreach ($roles as $role) { - $role->givePermissionTo($permission); - } + $permission = Permission::updateOrCreate([ + 'name' => $value['name'], + 'guard_name' => 'web', + ], [ + 'permission_group_id' => $value['group_id'], + 'module' => $value['module'], + ]); + foreach (Role::all() as $role) { + $role->givePermissionTo($permission); } } - - public function data() - { - $data = []; - // list of model permission - $groups = PermissionGroup::all(); - - foreach ($groups as $group) { - foreach ($this->crudActions($group->name) as $action) { - $data[] = ['name' => $action, 'group' => $group->id]; - } - } - - return $data; - } - - public function crudActions($name) - { - $actions = []; - // list of permission actions - $crud = ['create', 'read', 'update', 'delete','export', 'authorize', 'report','restore']; - - - foreach ($crud as $value) { - $actions[] = $name . '.' . $value; - } - - return $actions; - } } + + public function data() + { + $data = []; + $groups = PermissionGroup::all(); + + foreach ($groups as $group) { + + foreach ($this->crudActions($group->name) as $action) { + + $data[] = [ + 'name' => $action, + 'group_id' => $group->id, + 'module' => $group->name, + ]; + } + } + + return $data; + } + + public function crudActions($name) + { + $actions = ['create', 'read', 'update', 'delete', 'export', 'authorize', 'report', 'restore']; + $result = []; + + foreach ($actions as $value) { + $result[] = $name . '.' . $value; + } + + return $result; + } +}