Files
afriadirahman 8c6dad2a31
tests / ci (push) Canceled after 0s
Admin Panel
2026-09-29 14:57:37 +07:00

40 lines
1.3 KiB
PHP

<?php
use App\Enums\UserRole;
use App\Models\User;
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use function Laravel\Prompts\password;
use function Laravel\Prompts\text;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');
Artisan::command('admin:create', function () {
$name = text('Name', required: true);
$email = text(
'Email',
required: true,
validate: fn (string $value) => match (true) {
! filter_var($value, FILTER_VALIDATE_EMAIL) => 'Enter a valid email address.',
User::where('email', $value)->exists() => 'A user with this email already exists.',
default => null,
},
);
$password = password('Password', required: true, validate: fn (string $value) => strlen($value) < 8
? 'The password must be at least 8 characters.'
: null);
$user = User::create([
'name' => $name,
'email' => $email,
'role' => UserRole::Admin,
'password' => $password,
]);
$user->forceFill(['email_verified_at' => now()])->save();
$this->info("Admin user {$email} created.");
})->purpose('Create an admin user (public registration is disabled)');