antes de alterar login

This commit is contained in:
2026-05-26 16:40:01 +01:00
parent ef265ceeef
commit 3aa6e5468d
12 changed files with 316 additions and 92 deletions

View File

@@ -37,6 +37,23 @@ export default function RegisterPage() {
setError("");
setLoading(true);
// Validate inputs before attempting registration
if (!formData.email || !formData.email.includes("@")) {
setError("Por favor, insira um email válido.");
setLoading(false);
return;
}
if (formData.password.length < 6) {
setError("A palavra-passe deve ter pelo menos 6 caracteres.");
setLoading(false);
return;
}
if (!formData.establishmentName.trim()) {
setError("Por favor, insira o nome do restaurante.");
setLoading(false);
return;
}
try {
// 1. Criar utilizador na Firebase Auth
const userCredential = await createUserWithEmailAndPassword(auth, formData.email, formData.password);
@@ -62,10 +79,37 @@ export default function RegisterPage() {
// 3. Gravar na Realtime Database em /Restaurantes
await set(ref(db, `Restaurantes/${documentId}`), payload);
// 4. Success — redirect to dashboard
router.push("/");
} catch (err: any) {
console.error(err);
setError(err.message || "Ocorreu um erro ao registar o restaurante.");
console.error("[Register Error]", err.code, err.message);
// Map Firebase Auth error codes to user-friendly messages in Portuguese
switch (err.code) {
case "auth/email-already-in-use":
setError("Este email já está registado. Tente fazer login.");
break;
case "auth/weak-password":
setError("A palavra-passe deve ter pelo menos 6 caracteres.");
break;
case "auth/invalid-email":
setError("Email inválido. Verifique o formato do email.");
break;
case "auth/operation-not-allowed":
setError("Registo de contas está desactivado. Contacte o suporte.");
break;
case "auth/network-request-failed":
setError("Erro de conexão. Verifique a sua ligação à internet.");
break;
case "auth/too-many-requests":
setError("Demasiadas tentativas. Aguarde alguns minutos e tente novamente.");
break;
case "auth/invalid-credential":
setError("Credenciais inválidas.");
break;
default:
setError(`Erro ao criar conta: ${err.message || "Tente novamente."}`);
}
} finally {
setLoading(false);
}