siakad-itm/database/seeders/RolePermissionSeeder.php
Yoga Pangestu bffc5014ed feat: add media library and permission management
- Created media-library configuration file for managing media uploads and conversions.
- Added permission configuration file to define roles and permissions.
- Implemented migration for media table to store media items with necessary attributes.
- Created migration for permission tables to manage roles and permissions relationships.
- Updated DatabaseSeeder to include RolePermissionSeeder for seeding roles and permissions.
- Added RolePermissionSeeder to define specific permissions and roles for the application.
- Modified UserSeeder to assign roles to users during seeding.
2026-08-05 15:57:51 +07:00

52 lines
1.5 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Spatie\Permission\PermissionRegistrar;
class RolePermissionSeeder extends Seeder
{
public function run(): void
{
app()[PermissionRegistrar::class]->forgetCachedPermissions();
$permissionNames = [
'view-dashboard',
'view-academic-terms',
'create-academic-terms',
'update-academic-terms',
'delete-academic-terms',
];
$permissions = [];
foreach ($permissionNames as $name) {
$permissions[] = Permission::firstOrCreate(['name' => $name, 'guard_name' => 'web']);
}
app()[PermissionRegistrar::class]->forgetCachedPermissions();
$roles = [
'mahasiswa' => ['view-dashboard'],
'dosen' => ['view-dashboard'],
'staff-admin' => [
'view-dashboard',
'view-academic-terms',
'create-academic-terms',
'update-academic-terms',
'delete-academic-terms',
],
'staff-keuangan' => ['view-dashboard'],
'kaprodi' => ['view-dashboard', 'view-academic-terms'],
'developer' => $permissionNames,
];
foreach ($roles as $roleName => $rolePermissions) {
$role = Role::firstOrCreate(['name' => $roleName, 'guard_name' => 'web']);
$role->givePermissionTo($rolePermissions);
}
}
}