# šŸ‘¤ 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