/
DATKAI
/
ITCUP
Обзор
Документация
Войти
/
DATKAI
/
ITCUP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
app/Console/Commands/MakeAdminCommand.php
53 строки
2 KB
DATKAI
feat(deploy): интерактивный установщик install.sh + надёжное создание админа
01 июл 2026, 19:44
01 июл 2026, 19:44
fa8089c
Код
Авторство
О чём код?
<?php namespace App\Console\Commands; use App\Models\User; use Illuminate\Console\Command; use Spatie\Permission\Models\Role; class MakeAdminCommand extends Command { protected $signature = 'itcup:make-admin {email : Email пользователя} {--password= : Пароль (если задан — пользователь будет создан/обновлён)} {--name= : Отображаемое имя (по умолчанию «Администратор»)}'; protected $description = 'Создаёт администратора или назначает существующему пользователю роль admin'; public function handle(): int { $email = $this->argument('email'); $password = $this->option('password'); // Роли обязаны существовать (создаются RolesSeeder) Role::firstOrCreate(['name' => 'admin', 'guard_name' => 'web']); $user = User::where('email', $email)->first(); if (!$user) { if (!$password) { $this->error("Пользователь {$email} не найден. Укажите --password для создания."); return self::FAILURE; } $user = User::create([ 'name' => $this->option('name') ?: 'Администратор', 'email' => $email, 'password' => $password, // хешируется кастом 'hashed' 'employment_status' => 'active', ]); $this->info("✓ Создан пользователь {$user->name} ({$email})"); } elseif ($password) { $user->password = $password; $user->employment_status = 'active'; $user->save(); $this->info("✓ Обновлён пароль пользователя {$email}"); } $user->syncRoles(['admin']); $this->info("✓ {$user->name} ({$email}) теперь администратор"); return self::SUCCESS; } }