langfuse/langfuse · warning
{}
Error message
{} What it means
validateSignupEligibility returned a non-empty string, so the endpoint rejects the signup with 422. The empty '{}' message means the serialized error payload was empty — the eligibility failure reason itself was logged under a different key. Eligibility covers signup being disabled, SSO enforcement, allowlists, etc.
Source
Thrown at web/src/pages/api/auth/signup-verify.ts:54
}
const parsed = signupVerifySchema.safeParse(req.body);
if (!parsed.success) {
res
.status(422)
.json({ message: parsed.error.issues[0]?.message ?? "Invalid input" });
return;
}
const { email, name } = parsed.data;
const normalizedEmail = email.toLowerCase();
// Run eligibility checks (signup disabled, SSO enforcement, etc.)
const eligibilityError = await validateSignupEligibility({
email: normalizedEmail,
});
if (eligibilityError) {
res.status(422).json({ message: eligibilityError });
return;
}
// Check if user already exists
const existingUser = await prisma.user.findUnique({
where: { email: normalizedEmail },
});
if (existingUser) {
if (existingUser.password !== null) {
// User already has a password — they completed signup before
res.status(422).json({
message: "User with email already exists. Please sign in.",
});
return;
}
// Passwordless user exists (abandoned previous attempt) — allow re-sending OTP
res.status(200).json({ status: "ok" });View on GitHub (pinned to 59d92c7cf3)
Solutions
- Check the returned message body (eligibilityError string) for the real reason — '{}' suggests logging/serialization mismatch
- Verify signup-related env vars: AUTH_DISABLE_SIGNUP, SSO enforcement flags
- If the email belongs to an SSO-enforced org, complete signup via the SSO flow instead of email OTP
Defensive patterns
Strategy: validation
Validate before calling
const res = await fetch('/api/auth/signup-verify', {...});
if (res.status === 422) {
const { message } = await res.json();
if (/sso/i.test(message)) redirect('/auth/signin/sso');
} Prevention
- Surface the eligibility error message to the user verbatim — it explains SSO/disable reasons
- Detect SSO-enforced emails and route to the SSO sign-in flow before attempting signup
- Self-hosters: document AUTH_DISABLE_SIGNUP so users know signup is intentionally closed
When it happens
Trigger: POST /api/auth/signup-verify with an email that is required to use SSO (AUTH_FORCE_SESSION or org SSO enforcement), or when signup is disabled via env (e.g. AUTH_DISABLE_SIGNUP), or the email fails an allow/deny list.
Common situations: Self-hosted instances with AUTH_DISABLE_SIGNUP=true; enterprise orgs enforcing SSO where email-password signup is blocked; NEXT_PUBLIC_SIGN_UP_DISABLED features.
Related errors
- windowMs ${ms.toString()} does not correspond to a known Mon
- Invalid relationTable for entity dimension ${field}: ${dimen
- Score config not found within authorized project
- PRECONDITION_FAILED
- NOT_FOUND
AI-assisted analysis of langfuse/langfuse@59d92c7cf3 (2026-08-27).
Data as JSON: /api/errors/d79c4e2426e87a91.
Report an issue: GitHub.