129 lines
3.4 KiB
Markdown
129 lines
3.4 KiB
Markdown
# 👤 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:
|
|
|
|
```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:
|
|
|
|
```bash
|
|
# 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
|
|
|