mirror of
https://github.com/domfelipe/mika-agent-assist.git
synced 2026-08-07 06:36:46 +00:00
Changes
Co-authored-by: domfelipe <53182096+domfelipe@users.noreply.github.com>
This commit is contained in:
parent
0eb8689a27
commit
fa8bee0e36
7 changed files with 271 additions and 0 deletions
26
src/lib/auth-errors.ts
Normal file
26
src/lib/auth-errors.ts
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
/**
|
||||
* Traduz mensagens de erro do Supabase Auth para mensagens em português específicas.
|
||||
*/
|
||||
export function translateAuthError(message: string | undefined): string {
|
||||
if (!message) return "Algo deu errado. Tente novamente.";
|
||||
const m = message.toLowerCase();
|
||||
|
||||
if (m.includes("invalid login credentials") || m.includes("invalid_credentials"))
|
||||
return "E-mail ou senha incorretos. Tente novamente.";
|
||||
if (m.includes("user already registered") || m.includes("already been registered") || m.includes("already exists"))
|
||||
return "Esse e-mail já possui cadastro. Deseja fazer login?";
|
||||
if (m.includes("password") && (m.includes("short") || m.includes("weak") || m.includes("characters")))
|
||||
return "A senha precisa de pelo menos 8 caracteres, 1 maiúscula e 1 número.";
|
||||
if (m.includes("email") && m.includes("invalid"))
|
||||
return "Formato de e-mail inválido.";
|
||||
if (m.includes("rate limit") || m.includes("too many requests"))
|
||||
return "Muitas tentativas. Aguarde 1 minuto e tente novamente.";
|
||||
if (m.includes("expired") || m.includes("jwt") || m.includes("session"))
|
||||
return "Sua sessão expirou. Faça login novamente.";
|
||||
if (m.includes("email not confirmed"))
|
||||
return "Confirme seu e-mail antes de entrar. Verifique sua caixa de entrada.";
|
||||
if (m.includes("pwned") || m.includes("compromised") || m.includes("breach"))
|
||||
return "Esta senha apareceu em vazamentos públicos. Escolha outra mais forte.";
|
||||
|
||||
return message;
|
||||
}
|
||||
14
src/lib/password.ts
Normal file
14
src/lib/password.ts
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
export type PasswordStrength = 0 | 1 | 2 | 3;
|
||||
|
||||
export function passwordStrength(password: string): PasswordStrength {
|
||||
let score = 0;
|
||||
if (password.length >= 8) score++;
|
||||
if (/[A-Z]/.test(password) && /[a-z]/.test(password)) score++;
|
||||
if (/\d/.test(password) && /[^A-Za-z0-9]/.test(password)) score++;
|
||||
if (password.length >= 12) score = Math.min(3, score + 1) as PasswordStrength;
|
||||
return Math.min(3, score) as PasswordStrength;
|
||||
}
|
||||
|
||||
export function passwordStrengthLabel(s: PasswordStrength): string {
|
||||
return ["Muito fraca", "Fraca", "Média", "Forte"][s];
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue