feat: add UserLevel enum and integrate it in User Modal, UserResource and UserFactory
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\enum\UserLevel;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
@@ -30,7 +31,7 @@ class UserFactory extends Factory
|
||||
'email_verified_at' => now(),
|
||||
'password' => static::$password ??= Hash::make('password'),
|
||||
'remember_token' => Str::random(10),
|
||||
'level' => 0,
|
||||
'level' => UserLevel::NORMALUSER->value,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -43,4 +44,35 @@ class UserFactory extends Factory
|
||||
'email_verified_at' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a super admin user.
|
||||
*/
|
||||
public function superAdmin(): static
|
||||
{
|
||||
return $this->state(fn (array $attributes): array => [
|
||||
'level' => UserLevel::SUPERADMIN->value,
|
||||
'email' => 'admin@zemail.me',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a normal user.
|
||||
*/
|
||||
public function normalUser(): static
|
||||
{
|
||||
return $this->state(fn (array $attributes): array => [
|
||||
'level' => UserLevel::NORMALUSER->value,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a banned user.
|
||||
*/
|
||||
public function bannedUser(): static
|
||||
{
|
||||
return $this->state(fn (array $attributes): array => [
|
||||
'level' => UserLevel::BANNEDUSER->value,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
27
database/seeders/UserSeeder.php
Normal file
27
database/seeders/UserSeeder.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class UserSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
// Create super admin user
|
||||
User::factory()->superAdmin()->create([
|
||||
'name' => 'Super Admin',
|
||||
'email' => 'admin@zemail.me',
|
||||
]);
|
||||
|
||||
// Create normal users
|
||||
User::factory()->normalUser()->count(5)->create();
|
||||
|
||||
// Create banned users
|
||||
User::factory()->bannedUser()->count(2)->create();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user