Login e troca de senha
Entrando no app
A tela de login pede:
- E-mail corporativo (cadastrado pelo admin/RH)
- Senha
Após o clique em "Entrar":
- Sucesso → redireciona automaticamente para o Dashboard (
/) - Falha → exibe um cartão vermelho com a mensagem retornada pelo servidor
Não existe tela de "Esqueci minha senha" auto-atendimento. Se você esqueceu a senha, peça para um admin/superadmin trocar (ver seção abaixo).
Não existe registro/cadastro auto-atendimento. Usuários novos precisam ser criados pelo time interno.
Sessão expirou ou desconectou
Se o token JWT expirar, a próxima ação que fizer no app vai abrir a tela de login com a mensagem:
Sessão expirada. Faça login novamente.
Isso não significa erro — é proteção de segurança. Basta entrar novamente.
A sessão expira após o tempo definido no token (geralmente algumas horas a um dia, dependendo da configuração do tenant).
Trocar senha de um usuário (admin/superadmin)
A tela está em Administração → Alterar Senha (visível apenas para admin/superadmin no menu lateral).
Campos:
- E-mail do usuário — o e-mail cadastrado da pessoa
- Nova senha — mínimo de 6 caracteres
- Confirmar nova senha — precisa ser igual à anterior
- Ícone de olho permite mostrar/ocultar a senha digitada
Ao clicar Salvar:
- Sucesso → cartão verde com confirmação. O usuário precisa entrar com a nova senha na próxima vez que abrir o app.
- Falha → cartão vermelho com a mensagem do servidor (e-mail não encontrado, senha não atende regras, etc.)
Não tem auto-recuperação?
Hoje, não. A decisão é deliberada: o time mantém controle de acesso e usa o canal interno (RH, suporte) para zerar senhas. Se isso virar gargalo, o time de TI pode habilitar fluxo de "esqueci minha senha" via Supabase Auth no futuro.
Limites de segurança
- Não há captcha, mas o backend tem rate-limit no endpoint de login.
- Não há lockout local após N tentativas erradas — o controle é no servidor.
- Login é via Supabase Auth (provedor terceirizado de identidade) com
signInWithPassword. Senhas nunca trafegam em claro fora de TLS.
Por que apareceu “Não foi possível conectar ao servidor”?
Significa que a chamada ao backend falhou na rede — comum em:
- Sem conexão (Wi-Fi/4G fora)
- Servidor da Supersys temporariamente fora
- VPN/firewall bloqueando
Confira a barrinha de status no canto inferior direito (avisa "Sem conexão" quando offline) e tente novamente.
Logout
Há um botão "Sair" no menu de perfil/avatar (canto superior direito). Ao clicar:
- Limpa tokens armazenados localmente
- Volta para
/login
Triagem rápida — suporte
| Sintoma | Causa provável | Ação |
|---|---|---|
| "E-mail ou senha inválidos" | Credenciais erradas | Confirmar e-mail; pedir admin para resetar senha |
| "Sessão expirada" | Token venceu | Entrar de novo, comportamento normal |
| "Não foi possível conectar" | Rede/servidor | Verificar conexão; checar status do servidor |
| Login OK mas tela em branco | Cache antigo do PWA | Forçar atualização (notificação "Atualizar app agora") ou limpar cache do navegador |
| Admin não consegue trocar senha | E-mail digitado errado, ou usuário não está no tenant | Conferir e-mail; ver se o usuário ativo no Supabase pertence ao tenant correto |
| Usuário novo não aparece | Cadastro pelo time interno ainda pendente | Solicitar criação ao TI/RH |
Para o time técnico — informações úteis
- Token armazenado em
localStoragecom chavesauth_tokeneauth_token_expiration. - O backend
.NETvalida o JWT em cada requisição protegida e rejeita com401quando expirado. - A claim
mobile_user_codeé injetada no JWT pelo backend; ela vira o Cód. vendedor padrão dos pedidos. - A claim
roledefine se o usuário éuser,adminousuperadmin. - A claim
tenant_iddefine o tenant; cada tenant tem sua connection string.