'View Movies', 'slug' => 'view-movies', 'description' => 'Can view movies'], ['name' => 'Create Movies', 'slug' => 'create-movies', 'description' => 'Can create new movies'], ['name' => 'Edit Movies', 'slug' => 'edit-movies', 'description' => 'Can edit existing movies'], ['name' => 'Delete Movies', 'slug' => 'delete-movies', 'description' => 'Can delete movies'], ['name' => 'Manage Users', 'slug' => 'manage-users', 'description' => 'Can manage users'], ['name' => 'Manage Roles', 'slug' => 'manage-roles', 'description' => 'Can manage roles and permissions'], ['name' => 'Moderate Content', 'slug' => 'moderate-content', 'description' => 'Can moderate user content'], ]; foreach ($permissions as $permission) { Permission::firstOrCreate(['slug' => $permission['slug']], $permission); } // Create roles $adminRole = Role::firstOrCreate( ['slug' => 'admin'], ['name' => 'Administrator', 'description' => 'Full access to all features'] ); $moderatorRole = Role::firstOrCreate( ['slug' => 'moderator'], ['name' => 'Moderator', 'description' => 'Can moderate content and manage movies'] ); $userRole = Role::firstOrCreate( ['slug' => 'user'], ['name' => 'User', 'description' => 'Regular user with basic access'] ); // Assign permissions to admin (all permissions) $allPermissions = Permission::all(); foreach ($allPermissions as $permission) { if (!$adminRole->hasPermission($permission)) { $adminRole->permissions()->attach($permission->id); } } // Assign permissions to moderator $moderatorPermissions = Permission::whereIn('slug', [ 'view-movies', 'create-movies', 'edit-movies', 'delete-movies', 'moderate-content', ])->get(); foreach ($moderatorPermissions as $permission) { if (!$moderatorRole->hasPermission($permission)) { $moderatorRole->permissions()->attach($permission->id); } } // Assign permissions to user $userPermissions = Permission::whereIn('slug', [ 'view-movies', ])->get(); foreach ($userPermissions as $permission) { if (!$userRole->hasPermission($permission)) { $userRole->permissions()->attach($permission->id); } } $this->command->info('Roles and permissions seeded successfully!'); } }