3.4 KiB
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:
-
Role ADMIN (se não existir)
- Código:
ADMIN - Nome:
Administrador - Descrição:
Perfil de administrador com acesso total ao sistema
- Código:
-
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)
- Username:
🔐 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:
role- Armazena a role ADMINuser_account- Armazena o usuário adminuser_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
- Inicie a aplicação Spring Boot
- O
DataInitializerexecuta automaticamente - Faça login com as credenciais padrão
- 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