81 lines
2.9 KiB
PHP
Executable File
81 lines
2.9 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
use Symfony\Component\Console\Question\Question;
|
|
use Modules\Auth\Models\User;
|
|
|
|
class UserRegisterCommand extends Command
|
|
{
|
|
protected static $defaultName = 'user:register';
|
|
protected static $defaultDescription = 'Registra um novo usuário de forma interativa';
|
|
|
|
protected function execute(InputInterface $input, OutputInterface $output): int
|
|
{
|
|
$helper = $this->getHelper('question');
|
|
|
|
$output->writeln('<info>Cadastro de Novo Usuário</info>');
|
|
$output->writeln('-------------------------');
|
|
|
|
// Name
|
|
$nameQuestion = new Question('Nome completo: ');
|
|
$name = $helper->ask($input, $output, $nameQuestion);
|
|
if (empty($name)) {
|
|
$output->writeln('<error>O nome é obrigatório.</error>');
|
|
return Command::FAILURE;
|
|
}
|
|
|
|
// Email
|
|
$emailQuestion = new Question('E-mail: ');
|
|
$email = $helper->ask($input, $output, $emailQuestion);
|
|
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
|
$output->writeln('<error>E-mail inválido ou vazio.</error>');
|
|
return Command::FAILURE;
|
|
}
|
|
|
|
if (User::where('users_email', $email)->exists()) {
|
|
$output->writeln("<error>Já existe um usuário com o e-mail {$email}.</error>");
|
|
return Command::FAILURE;
|
|
}
|
|
|
|
// Password
|
|
$passwordQuestion = new Question('Senha: ');
|
|
$passwordQuestion->setHidden(true);
|
|
$passwordQuestion->setHiddenFallback(false);
|
|
$password = $helper->ask($input, $output, $passwordQuestion);
|
|
|
|
if (strlen($password) < 6) {
|
|
$output->writeln('<error>A senha deve ter pelo menos 6 caracteres.</error>');
|
|
return Command::FAILURE;
|
|
}
|
|
|
|
// Bus ID
|
|
$busIdQuestion = new Question('ID Bus (opcional): ');
|
|
$busId = $helper->ask($input, $output, $busIdQuestion);
|
|
|
|
try {
|
|
$user = new User();
|
|
$user->users_name = $name;
|
|
$user->users_email = $email;
|
|
$user->users_password = password_hash($password, PASSWORD_DEFAULT);
|
|
$user->users_role = 'user';
|
|
$user->users_bus_id = $busId;
|
|
$user->users_status = 'active';
|
|
$user->save();
|
|
|
|
$output->writeln("\n<info>Usuário '{$name}' cadastrado com sucesso!</info>");
|
|
$output->writeln("ID: {$user->users_id}");
|
|
$output->writeln("E-mail: {$user->users_email}");
|
|
|
|
return Command::SUCCESS;
|
|
} catch (\Exception $e) {
|
|
$output->writeln("<error>Erro ao cadastrar usuário: " . $e->getMessage() . "</error>");
|
|
return Command::FAILURE;
|
|
}
|
|
}
|
|
}
|