37 lines
1.1 KiB
PHP
37 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Console\Command;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Str;
|
|
|
|
final class RsyncStudioAdminCreate extends Command
|
|
{
|
|
protected $signature = 'rsync-studio:admin {email} {--name=Administrator}';
|
|
|
|
protected $description = 'Create or promote an Rsync Studio licensing administrator';
|
|
|
|
public function handle(): int
|
|
{
|
|
$email = strtolower(trim($this->argument('email')));
|
|
$password = Str::password(24, true, true, false, false);
|
|
$u = User::firstOrNew(['email' => $email]);
|
|
$u->name = $this->option('name');
|
|
$u->is_admin = true;
|
|
$u->email_verified_at = now();
|
|
if (! $u->exists) {
|
|
$u->password = Hash::make($password);
|
|
} $u->save();
|
|
$this->info("Administrator ready: {$email}");
|
|
if (! $u->wasRecentlyCreated) {
|
|
$this->line('Existing password retained.');
|
|
} else {
|
|
$this->warn("Temporary password (shown once): {$password}");
|
|
}
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
}
|