some progress

This commit is contained in:
Doar Mihai
2026-03-07 13:29:50 +02:00
parent bf5c92c239
commit 72c2cd9485
15 changed files with 460 additions and 42 deletions
+21
View File
@@ -2,9 +2,11 @@
namespace Database\Seeders;
use App\Models\MediaList;
use App\Models\User;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Str;
class DatabaseSeeder extends Seeder
{
@@ -17,7 +19,26 @@ class DatabaseSeeder extends Seeder
User::factory()->create([
'name' => 'Test User',
'slug' => 'test-user',
'email' => 'test@example.com',
'password' => bcrypt('password'),
]);
$user = User::find(1);
$this->createMediaList('Watchlist', $user);
$this->createMediaList('Collection', $user);
$this->createMediaList('Watched', $user);
$this->createMediaList('Liked', $user);
$this->createMediaList('Favourite', $user);
}
private function createMediaList(string $name, $user)
{
return MediaList::create([
'name' => $name,
'slug' => Str::slug($name),
'user_id' => $user->id,
]);
}
}
@@ -0,0 +1,84 @@
<?php
namespace Database\Seeders;
use App\Models\Permission;
use App\Models\Role;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class RolesAndPermissionsSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// Create permissions
$permissions = [
['name' => '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!');
}
}