44 lines
1009 B
TypeScript
44 lines
1009 B
TypeScript
import { convexBetterAuthNextJs } from "@convex-dev/better-auth/nextjs";
|
|
|
|
function getErrorText(error: unknown): string {
|
|
if (error instanceof Error) {
|
|
return error.message;
|
|
}
|
|
|
|
if (typeof error === "string") {
|
|
return error;
|
|
}
|
|
|
|
if (error && typeof error === "object") {
|
|
const { data, message } = error as { data?: unknown; message?: unknown };
|
|
return [message, data]
|
|
.filter((value): value is string => typeof value === "string")
|
|
.join(" ");
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
function isConvexAuthError(error: unknown): boolean {
|
|
return /\b(Unauthenticated|Unauthorized|Not authenticated)\b/i.test(
|
|
getErrorText(error),
|
|
);
|
|
}
|
|
|
|
export const {
|
|
handler,
|
|
preloadAuthQuery,
|
|
isAuthenticated,
|
|
getToken,
|
|
fetchAuthQuery,
|
|
fetchAuthMutation,
|
|
fetchAuthAction,
|
|
} = convexBetterAuthNextJs({
|
|
convexUrl: process.env.NEXT_PUBLIC_CONVEX_URL!,
|
|
convexSiteUrl: process.env.NEXT_PUBLIC_CONVEX_SITE_URL!,
|
|
jwtCache: {
|
|
enabled: true,
|
|
isAuthError: isConvexAuthError,
|
|
},
|
|
});
|