fix: always render ZeroProvider, allow anon queries without 401

This commit is contained in:
CREDO23 2026-03-24 16:59:42 +02:00
parent 54ffdc5aad
commit 657f546908
2 changed files with 15 additions and 9 deletions

View file

@ -12,7 +12,7 @@ async function authenticateRequest(
): Promise<{ ctx: Context; error?: never } | { ctx?: never; error: NextResponse }> {
const authHeader = request.headers.get("Authorization");
if (!authHeader?.startsWith("Bearer ")) {
return { error: NextResponse.json({ error: "Unauthorized" }, { status: 401 }) };
return { ctx: undefined };
}
try {

View file

@ -43,17 +43,23 @@ function ZeroAuthGuard({ children }: { children: React.ReactNode }) {
export function ZeroProvider({ children }: { children: React.ReactNode }) {
const { data: user } = useAtomValue(currentUserAtom);
if (!user?.id) {
return <>{children}</>;
}
const hasUser = !!user?.id;
const userID = hasUser ? String(user.id) : "anon";
const context = hasUser ? { userId: String(user.id) } : undefined;
const auth = hasUser ? getBearerToken() || undefined : undefined;
const userID = String(user.id);
const context = { userId: userID };
const auth = getBearerToken() || undefined;
const opts = {
userID,
schema,
queries,
context,
cacheURL,
auth,
};
return (
<ZeroReactProvider {...{ userID, context, cacheURL, schema, queries, auth }}>
<ZeroAuthGuard>{children}</ZeroAuthGuard>
<ZeroReactProvider {...opts}>
{hasUser ? <ZeroAuthGuard>{children}</ZeroAuthGuard> : children}
</ZeroReactProvider>
);
}