feat: implement JWT-based authentication system with repository, service, and middleware layers
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
use Dotenv\Dotenv;
|
||||
use Ramsey\Uuid\Uuid;
|
||||
use KrothiumAPI\Database\DBManager;
|
||||
|
||||
$dotenv = Dotenv::createImmutable(__DIR__ . '/..');
|
||||
$dotenv->load();
|
||||
|
||||
$db = DBManager::getConnection();
|
||||
|
||||
$nome = $argv[1] ?? 'Administrador Workbloom';
|
||||
$email = $argv[2] ?? 'admin@workbloom.com.br';
|
||||
$usuario = $argv[3] ?? 'admin';
|
||||
$senha = $argv[4] ?? 'Admin@123456';
|
||||
|
||||
echo "=== Criação de Usuário Administrador ===\n";
|
||||
echo "Nome: {$nome}\n";
|
||||
echo "Email: {$email}\n";
|
||||
echo "Usuário: {$usuario}\n";
|
||||
|
||||
// Verifica se já existe por e-mail ou nome_usuario
|
||||
$existente = $db->fetchOne(
|
||||
"SELECT id, uuid, email, nome_usuario FROM usuario WHERE email = :email OR nome_usuario = :usuario LIMIT 1",
|
||||
['email' => $email, 'usuario' => $usuario]
|
||||
);
|
||||
|
||||
if ($existente !== null) {
|
||||
echo "Erro: Usuário já cadastrado com este e-mail ou nome de usuário (ID: {$existente['id']}).\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$userUuid = Uuid::uuid7()->toString();
|
||||
$senhaHash = password_hash($senha, PASSWORD_ARGON2ID);
|
||||
|
||||
// Cria o usuário
|
||||
$db->insert('usuario', [
|
||||
'uuid' => $userUuid,
|
||||
'nome_completo' => $nome,
|
||||
'email' => $email,
|
||||
'nome_usuario' => $usuario,
|
||||
'senha_hash' => $senhaHash,
|
||||
'ativo' => 1,
|
||||
]);
|
||||
|
||||
$userId = (int)$db->fetchColumn(
|
||||
"SELECT id FROM usuario WHERE uuid = :uuid LIMIT 1",
|
||||
['uuid' => $userUuid]
|
||||
);
|
||||
|
||||
echo "Usuário criado com sucesso! ID: {$userId}, UUID: {$userUuid}\n";
|
||||
|
||||
// Verifica se existe ao menos uma empresa
|
||||
$empresaId = $db->fetchColumn("SELECT id FROM empresa WHERE deleted_at IS NULL LIMIT 1");
|
||||
|
||||
if (!$empresaId) {
|
||||
echo "Nenhuma empresa cadastrada. Criando Empresa Matriz de teste...\n";
|
||||
$empresaUuid = Uuid::uuid7()->toString();
|
||||
$db->insert('empresa', [
|
||||
'uuid' => $empresaUuid,
|
||||
'tipo_estabelecimento' => 'MATRIZ',
|
||||
'status' => 'ATIVO',
|
||||
'nome_empresarial' => 'WORKBLOOM SISTEMAS LTDA',
|
||||
'nome_fantasia' => 'Workbloom Matriz',
|
||||
'cnpj' => '12345678000195',
|
||||
'regime_tributario' => 1,
|
||||
]);
|
||||
|
||||
$empresaId = (int)$db->fetchColumn(
|
||||
"SELECT id FROM empresa WHERE uuid = :uuid LIMIT 1",
|
||||
['uuid' => $empresaUuid]
|
||||
);
|
||||
echo "Empresa criada! ID: {$empresaId}, UUID: {$empresaUuid}\n";
|
||||
} else {
|
||||
$empresaId = (int)$empresaId;
|
||||
}
|
||||
|
||||
// Vincula usuário à empresa como ADMIN
|
||||
$db->insert('usuario_empresa', [
|
||||
'usuario_id' => $userId,
|
||||
'empresa_id' => $empresaId,
|
||||
'perfil' => 'ADMIN',
|
||||
'acesso_todas_filiais' => 1,
|
||||
]);
|
||||
|
||||
echo "Vínculo criado na empresa ID: {$empresaId} como ADMIN!\n";
|
||||
echo "Concluído com sucesso!\n";
|
||||
Reference in New Issue
Block a user