# Alterações da V8

## Login e encaminhamento

- criada uma única janela de login para clientes, administradores e colaboradores;
- login por nome de utilizador ou email;
- encaminhamento automático por tipo de conta;
- `/admin/login/` encaminha visualmente para o login único;
- `/portal/login/` mantém compatibilidade;
- preservação segura do parâmetro `next`.

## Autenticação de dois fatores

- integração com `django-otp` e dispositivos TOTP;
- configuração através de QR Code;
- chave manual para configuração alternativa;
- desafio de segundo fator depois da palavra-passe;
- códigos de recuperação protegidos por hash e de utilização única;
- regeneração dos códigos;
- desativação protegida por palavra-passe e token;
- opção para obrigar 2FA a toda a equipa interna;
- middleware para proteger sessões com 2FA configurado;
- histórico de eventos de segurança.

## Credenciais fictícias no backoffice

- nova página **Relação com clientes → Credenciais de demonstração**;
- acesso exclusivo a superutilizadores;
- apresentação de utilizador, palavra-passe fictícia, perfil e estado;
- botões para copiar;
- exportação TXT;
- ocultação configurável em produção;
- aviso explícito de que palavras-passe reais não são recuperáveis.

## Cabeçalhos e conta

- sino de notificações com contadores no backoffice e portal do cliente;
- menu de perfil inspirado no padrão visual fornecido;
- acesso rápido ao painel, conta, segurança e logout;
- página comum para editar perfil;
- fotografia de utilizador;
- centro de notificações do cliente.

## Rodapés e identidade

- rodapé no backoffice;
- rodapé na área do cliente;
- rodapé no login e páginas de conta;
- versão, ambiente, K4W, copyright, website e estado do sistema.

## Base de dados

Novos modelos:

- `security.UserProfile`;
- `security.RecoveryCode`;
- `security.SecurityEvent`.

Novas dependências:

- `django-otp==1.7.0`;
- `segno` para QR Codes SVG.
