shubhattinS
Convex Community4mo ago
1 reply
shubhattin

How to handle Authentication for preloadQuery on the cleint (Better Auth)

I am using Better auth setup with convex in nextjs app router like this.
To have user info on the client prefetched

import { api } from '$convex/_generated/api';
import { fetchQuery, preloadQuery } from 'convex/nextjs';
import { getToken } from '~/lib/auth-server';
import List from './List';
import { redirect } from 'next/navigation';

export default async function Home() {
  const token = await getToken();
  const user = fetchQuery(api.auth.getCurrentUser, {}, { token });
  if (!user) redirect('/');
  const preloadedRecords = await preloadQuery(api.routes.rentData.getRentData, {}, { token });
  return <List preloadedRecords={preloadedRecords} />;
}


But on client we get a error as for Authentication verification the token from /api/convex/token has to be fetched which is needed for authentication on convex backend.
What could be a alternative Solution besides having a early return by checking the auth via useConvexAuth hook on the client
Was this page helpful?