development-phase · in-progress
Fase 02 — Conta e contexto
Checklist de autenticação, vínculos ativos e configurações próprias.
Referências: modelo de acesso, E-mails, notificações e entregas e fluxo de login.
O contexto de vínculo ativo, a proteção do painel, a seleção e troca de vínculo, admin:create e as configurações próprias de senha e e-mail estão implementados. O Administrador do Sistema também pode cadastrar contas e vínculos administrativos pela interface, na Fase 05. A edição de perfil pessoal fora da administração de contas segue pendente.
Login e recuperação de senha
- Configurar Fortify para autenticar por
users.email. - Disponibilizar “Esqueci minha senha” com link de uso único e expiração pelo broker do Fortify.
- Não persistir o envio de recuperação de senha nas tabelas de mensagens e tentativas.
- Impedir token, URL e conteúdo sensível em logs.
- Aplicar senha de 8–64 caracteres, maiúsculas/minúsculas, número, símbolo e verificação contra senhas comprometidas nos fluxos existentes.
- Testar solicitação, renderização e redefinição com link válido.
- Completar testes de link expirado, reutilizado e solicitação repetida.
Criação de conta
- Disponibilizar
php artisan admin:createpara criar uma conta com seu primeiro vínculo ativo de Administrador do Sistema ou adicionar esse vínculo a uma conta encontrada pelo CPF. O comando pode ser executado mesmo quando já existe outro Administrador do Sistema ativo. - Solicitar primeiro o CPF com 11 dígitos sem pontuação. Se a conta não existir, pedir nome, e-mail e registro institucional; o mesmo e-mail é salvo na conta e no primeiro vínculo. Se a conta já existir para o CPF, conservar seus dados e pedir somente o e-mail do novo vínculo e o registro institucional. O vínculo de Administrador do Sistema não recebe campus nem curso. O comando nunca pede senha: gera uma senha aleatória desconhecida e enfileira um convite para a pessoa solicitar o link de definição de senha.
- Validar campos, CPF de 11 dígitos e e-mail antes de gravar. Para uma conta nova, exigir e-mail ainda não usado e compartilhá-lo com o primeiro vínculo. Ao adicionar vínculo a uma conta existente, preservar os dados da conta e enfileirar aviso para
users.emaileaffiliations.email; se os endereços forem iguais, enviar apenas um aviso. O aviso leva ao login. As gravações são transacionais; o Activity Log identifica o ator comoterminale exclui senha/hash. - Não exigir confirmação ou código de verificação de e-mail para o bootstrap inicial.
- Implementar a criação de contas e vínculos administrativos pela interface do Administrador do Sistema; consultar o CPF antes do envio, preservar a conta existente e reutilizar a Action transacional do
admin:create. Ver Fase 05. - No
admin:create, salvar o conteúdo renderizado do convite e do aviso de novo vínculo junto às tentativas, sem incluir senha, token ou URL assinada. O convite informa o primeiro vínculo e leva à recuperação com o e-mail preenchido para solicitar a definição da senha; o aviso de vínculo novo leva ao login.
CreateAdminCommandTest cobre conta nova e CPF existente, e-mails da conta e do vínculo, validações, criação mesmo com outro administrador ativo, confirmação, execução não interativa, autoria terminal e rollback. ProfileUpdateTest verifica a exibição do e-mail da conta e o encaminhamento para Segurança. SecurityTest cobre a troca do e-mail, senha atual, confirmação do novo endereço, unicidade, preservação do e-mail do vínculo, autoria e reserva dos dois avisos. Os testes substituem a fila e não enviam e-mails para SMTP/Mailpit.
Seleção de vínculo
- Carregar vínculos ativos depois da autenticação.
- Bloquear acesso funcional sem vínculo ativo.
- Selecionar automaticamente um único vínculo e exibir escolha para vários.
- Armazenar vínculo atual na sessão.
- Permitir troca sem novo login.
- Atualizar contexto de autorização, campus e
last_used_at. - Registrar middleware/serviço único para resolver o vínculo ativo em cada requisição.
- Registrar o vínculo usado em ações relevantes.
Configurações próprias
- Exibir o e-mail da conta sem edição em Perfil, com link para Segurança. Em Segurança, exigir confirmação de senha para acessar a página e pedir a senha atual e duas entradas iguais do novo e-mail no formulário de troca. Validar formato e unicidade, normalizar o endereço e exigir vínculo ativo da própria conta. A atualização de
users.emaile a reserva de dois avisos na fila ocorrem na mesma transação: um para o endereço anterior e outro para o novo. O novo e-mail passa a ser usado no login e na recuperação de senha;affiliations.emailpermanece igual. O fluxo não exige confirmação pelo novo endereço antes da troca. - Impedir alteração do nome na configuração atual.
- Permitir ao Administrador do Sistema corrigir o CPF na edição administrativa da conta, validando formato e unicidade; a pessoa não o altera na configuração própria.
- Permitir ao discente alterar RG, nascimento e endereço atual.
- Impedir edição de dados pessoais por outro vínculo.
Fase seguinte na sequência
O contexto e as configurações de acesso implementados dão suporte às próximas fases. A gestão administrativa de contas e vínculos está disponível; seguem em aberto as edições pessoais próprias e as jornadas de domínio.