@@ -1,8 +1,39 @@
|
||||
<?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)');
|
||||
|
||||
Reference in New Issue
Block a user