Files
sigrhapf/Documents/sigfip/sigefp/sigefp-api/USUARIO_ADMIN_PADRAO.md
T
2026-05-19 11:45:46 +00:00

3.4 KiB

👤 Usuário Admin Padrão - Criação Automática

📋 Descrição

O sistema cria automaticamente um usuário administrador padrão no banco de dados quando a aplicação é iniciada pela primeira vez.

🔧 Implementação

Arquivo: DataInitializer.java

Localização: sigefp-api/src/main/java/br/gov/sigefp/api/config/DataInitializer.java

Este componente Spring Boot implementa CommandLineRunner e executa automaticamente após a inicialização da aplicação.

O que é criado:

  1. Role ADMIN (se não existir)

    • Código: ADMIN
    • Nome: Administrador
    • Descrição: Perfil de administrador com acesso total ao sistema
  2. Usuário Admin (se não existir)

    • Username: admin
    • Nome Completo: Administrador do Sistema
    • Email: admin@sigefp.gov.gw
    • Password: admin123 (criptografado com BCrypt)
    • Status: Ativo
    • Role: ADMIN (associado automaticamente)

🔐 Credenciais Padrão

Username: admin
Password: admin123

⚠️ IMPORTANTE: Altere a senha após o primeiro login em ambiente de produção!

🗄️ Persistência no Banco de Dados

O usuário e a role são persistidos no banco de dados PostgreSQL, não são dados mock ou temporários.

Tabelas Afetadas:

  1. role - Armazena a role ADMIN
  2. user_account - Armazena o usuário admin
  3. user_role - Armazena a associação entre usuário e role

🔄 Comportamento

  • Primeira execução: Cria role ADMIN e usuário admin
  • Execuções subsequentes: Verifica se já existem e não cria duplicados
  • Logs: Registra no console quando cria ou quando já existe

📝 Logs de Exemplo

INFO  - Inicializando dados padrão...
INFO  - Criando role ADMIN...
INFO  - Criando usuário admin padrão...
INFO  - Role ADMIN associada ao usuário admin.
INFO  - Usuário admin criado com sucesso!
INFO  - Username: admin
INFO  - Password: admin123
INFO  - Email: admin@sigefp.gov.gw
INFO  - Inicialização de dados concluída.

Ou, se já existir:

INFO  - Inicializando dados padrão...
INFO  - Usuário admin já existe.
INFO  - Inicialização de dados concluída.

🧪 Como Verificar

Via SQL:

-- Verificar usuário admin
SELECT * FROM user_account WHERE username = 'admin';

-- Verificar role ADMIN
SELECT * FROM role WHERE code = 'ADMIN';

-- Verificar associação
SELECT ur.*, ua.username, r.code 
FROM user_role ur
JOIN user_account ua ON ur.user_id = ua.id
JOIN role r ON ur.role_id = r.id
WHERE ua.username = 'admin';

Via API:

# Fazer login
curl -X POST http://localhost:8081/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}'

# Listar usuários (requer autenticação)
curl -X GET http://localhost:8081/api/admin/users \
  -H "Authorization: Bearer {token}"

🔒 Segurança

  • A senha é criptografada usando BCrypt antes de ser armazenada
  • O usuário só é criado se não existir (evita duplicação)
  • A role só é criada se não existir (evita duplicação)
  • A associação é verificada antes de criar (evita duplicação)

🚀 Uso

  1. Inicie a aplicação Spring Boot
  2. O DataInitializer executa automaticamente
  3. Faça login com as credenciais padrão
  4. Altere a senha após o primeiro login

Status: Implementado e funcional
Tipo: Dados reais no banco de dados (não mock)
Última atualização: Dezembro 2024