parfum/database/seeders/RolePermissionSeeder.php
Yoga Pangestu e905f98b4f feat(role & permission): membuat trait untuk otorisasi
-menambahkan otorisasi semua komponen. tabel, view dan lainnya
2025-10-02 21:42:08 +07:00

195 lines
4.4 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class RolePermissionSeeder extends Seeder
{
public function run(): void
{
$developer = Role::firstOrCreate(['name' => 'Developer']);
$owner = Role::firstOrCreate(['name' => 'Owner']);
$leader = Role::firstOrCreate(['name' => 'Leader']);
$admin = Role::firstOrCreate(['name' => 'Admin']);
$partner = Role::firstOrCreate(['name' => 'Partner']);
$customer = Role::firstOrCreate(['name' => 'Customer']);
$permissions = [
'view account',
'update account',
'view profile',
'update profile',
'view password',
'update password',
'view overview',
'view outlet',
'create outlet',
'update outlet',
'delete outlet',
'view user',
'create user',
'update user',
'delete user',
'view tier',
'create tier',
'update tier',
'delete tier',
'view voucher',
'create voucher',
'update voucher',
'delete voucher',
'view customer',
'create customer',
'update customer',
'delete customer',
'view category',
'create category',
'update category',
'delete category',
'view brand',
'create brand',
'update brand',
'delete brand',
'view perfume',
'create perfume',
'update perfume',
'delete perfume',
'view product',
'create product',
'update product',
'delete product',
'view bottle',
'create bottle',
'update bottle',
'delete bottle',
'view expense',
'create expense',
'update expense',
'delete expense',
];
foreach ($permissions as $permission) {
Permission::firstOrCreate(['name' => $permission]);
}
$developer->syncPermissions($permissions);
$owner->syncPermissions($permissions);
$leader->syncPermissions(array_diff($permissions, [
'view outlet',
'create outlet',
'update outlet',
'delete outlet',
'view user',
'create user',
'update user',
'delete user',
'create tier',
'update tier',
'delete tier',
'create voucher',
'update voucher',
'delete voucher',
'create perfume',
'update perfume',
'delete perfume',
'create product',
'update product',
'delete product',
'create bottle',
'update bottle',
'delete bottle',
]));
$admin->syncPermissions(array_diff($permissions, [
'view outlet',
'create outlet',
'update outlet',
'delete outlet',
'view user',
'create user',
'update user',
'delete user',
'create tier',
'update tier',
'delete tier',
'create voucher',
'update voucher',
'delete voucher',
'create category',
'update category',
'delete category',
'create brand',
'update brand',
'delete brand',
'create perfume',
'update perfume',
'delete perfume',
'create product',
'update product',
'delete product',
'create bottle',
'update bottle',
'delete bottle',
]));
$partner->syncPermissions([
'view overview',
'view account',
'update account',
'view profile',
'update profile',
'view password',
'update password',
]);
$customer->syncPermissions([
'view overview',
'view account',
'update account',
'view profile',
'update profile',
'view password',
'update password',
]);
}
}