File size: 808 Bytes
f133948
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/** Better Auth signup error shape from authClient.signUp.email onError */
type SignUpErrorPayload = {
  error?: {
    message?: string;
    statusText?: string;
    status?: number;
    code?: string;
  };
};

/**
 * Heuristic for duplicate-email signup failures.
 * Used only to choose UX path — never show raw message to users (enumeration risk).
 */
export function isSignUpDuplicateError(error: SignUpErrorPayload): boolean {
  const msg = `${error.error?.message ?? ""} ${error.error?.statusText ?? ""} ${error.error?.code ?? ""}`.toLowerCase();
  if (error.error?.status === 409 || error.error?.status === 422) return true;
  return (
    msg.includes("already") ||
    msg.includes("exists") ||
    msg.includes("unique") ||
    msg.includes("duplicate") ||
    msg.includes("user_already")
  );
}