diff --git a/database/seeders/PermissionGroupSeeder.php b/database/seeders/PermissionGroupSeeder.php new file mode 100644 index 0000000..be91694 --- /dev/null +++ b/database/seeders/PermissionGroupSeeder.php @@ -0,0 +1,40 @@ +data(); + + foreach ($data as $value) { + PermissionGroup::updateOrCreate([ + 'name' => $value['name'], + 'slug' => Str::slug($value['name']) + ]); + } + } + + public function data() + { + return [ + ['name' => 'usermanagement'], + ['name' => 'basic-data'], + ['name' => 'permohonan'], + ['name' => 'admin'], + ['name' => 'senior-officer'], + ['name' => 'penilai'], + ['name' => 'surveyor'] + ]; + } + } diff --git a/database/seeders/PermissionsSeeder.php b/database/seeders/PermissionsSeeder.php new file mode 100644 index 0000000..21c5165 --- /dev/null +++ b/database/seeders/PermissionsSeeder.php @@ -0,0 +1,65 @@ +data(); + + foreach ($data as $value) { + $permission = Permission::updateOrCreate([ + 'name' => $value['name'], + 'guard_name' => 'web' // or 'api + ], [ + 'permission_group_id' => $value['group'] + ]); + + $roles = Role::all(); + foreach ($roles 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']; + + + foreach ($crud as $value) { + $actions[] = $name . '.' . $value; + } + + return $actions; + } + } diff --git a/database/seeders/RolesSeeder.php b/database/seeders/RolesSeeder.php new file mode 100644 index 0000000..ef0ae1d --- /dev/null +++ b/database/seeders/RolesSeeder.php @@ -0,0 +1,33 @@ +data(); + + foreach ($data as $value) { + Role::create([ + 'name' => $value['name'], + 'guard_name' => 'web', + ]); + } + } + + public function data() + { + return [ + ['name' => 'administrator'] + ]; + } + } diff --git a/database/seeders/UsermanagementDatabaseSeeder.php b/database/seeders/UsermanagementDatabaseSeeder.php index b080e5d..52b564c 100644 --- a/database/seeders/UsermanagementDatabaseSeeder.php +++ b/database/seeders/UsermanagementDatabaseSeeder.php @@ -11,6 +11,11 @@ class UsermanagementDatabaseSeeder extends Seeder */ public function run(): void { - // $this->call([]); + $this->call([ + PermissionGroupSeeder::class, + RolesSeeder::class, + PermissionsSeeder::class, + UsersSeeder::class, + ]); } } diff --git a/database/seeders/UsersSeeder.php b/database/seeders/UsersSeeder.php new file mode 100644 index 0000000..24ebdb0 --- /dev/null +++ b/database/seeders/UsersSeeder.php @@ -0,0 +1,33 @@ + $role->name, + 'email' => $role->name . '@lpj.id', + 'password' => Hash::make('lpj'), + 'email_verified_at' => now(), + ]); + + $user->assignRole($role); + } + } + }