11import { createClient, type GenericCtx } from "@convex-dev/better-auth";
2- {{ #if (or (includes frontend " tanstack-start " ) (includes frontend " next " ))}}
2+ {{ #if (or (includes frontend " native-nativewind " ) (includes frontend " native-unistyles " ))}}
33import { convex } from "@convex-dev/better-auth/plugins";
4+ import { expo } from "@better-auth/expo";
45{{ else }}
5- import { convex, crossDomain } from "@convex-dev/better-auth/plugins";
6+ import { convex } from "@convex-dev/better-auth/plugins";
7+ {{ /if }}
8+ {{ #if (or (includes frontend " tanstack-router" ) (includes frontend " react-router" ) (includes frontend " nuxt" ) (includes frontend " svelte" ) (includes frontend " solid" ))}}
9+ import { crossDomain } from "@convex-dev/better-auth/plugins";
610{{ /if }}
711import { components } from "./_generated/api";
812import { DataModel } from "./_generated/dataModel";
913import { query } from "./_generated/server";
1014import { betterAuth } from "better-auth";
15+ import { v } from "convex/values";
1116
17+ {{ #if (or (includes frontend " tanstack-start" ) (includes frontend " next" ) (includes frontend " tanstack-router" ) (includes frontend " react-router" ) (includes frontend " nuxt" ) (includes frontend " svelte" ) (includes frontend " solid" ))}}
1218const siteUrl = process.env.SITE_URL!;
19+ {{ /if }}
20+ {{ #if (or (includes frontend " native-nativewind" ) (includes frontend " native-unistyles" ))}}
21+ const nativeAppUrl = process.env.NATIVE_APP_URL || "mybettertapp://";
22+ {{ /if }}
1323
1424export const authComponent = createClient<DataModel >(components.betterAuth);
1525
16- export const createAuth = (
17- ctx: GenericCtx<DataModel >,
18- { optionsOnly } = { optionsOnly: false },
19- ) => {
20- return betterAuth({
21- logger: {
22- disabled: optionsOnly,
23- },
24- {{ #if (or (includes frontend " tanstack-start" ) (includes frontend " next" ))}}
25- baseURL: siteUrl,
26- trustedOrigins: [siteUrl],
27- {{ else }}
28- trustedOrigins: [siteUrl],
29- {{ /if }}
30- database: authComponent.adapter(ctx),
31- emailAndPassword: {
32- enabled: true,
33- requireEmailVerification: false,
34- },
35- plugins: [
36- {{ #unless (or (includes frontend " tanstack-start" ) (includes frontend " next" ))}}
37- crossDomain({ siteUrl }),
38- {{ /unless }}
39- convex(),
40- ],
41- });
42- };
26+ function createAuth(
27+ ctx: GenericCtx<DataModel >,
28+ { optionsOnly }: { optionsOnly?: boolean } = { optionsOnly: false }
29+ ) {
30+ return betterAuth({
31+ logger: {
32+ disabled: optionsOnly,
33+ },
34+ {{ #if (and (or (includes frontend " native-nativewind" ) (includes frontend " native-unistyles" )) (or (includes frontend " tanstack-start" ) (includes frontend " next" )))}}
35+ baseURL: siteUrl,
36+ trustedOrigins: [siteUrl, nativeAppUrl],
37+ {{ else if (or (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}}
38+ trustedOrigins: [nativeAppUrl],
39+ {{ else if (or (includes frontend "tanstack-start") (includes frontend "next"))}}
40+ baseURL: siteUrl,
41+ trustedOrigins: [siteUrl],
42+ {{ else }}
43+ trustedOrigins: [siteUrl],
44+ {{ /if }}
45+ database: authComponent.adapter(ctx),
46+ emailAndPassword: {
47+ enabled: true,
48+ requireEmailVerification: false,
49+ },
50+ plugins: [
51+ {{ #if (or (includes frontend " native-nativewind" ) (includes frontend " native-unistyles" ))}}
52+ expo(),
53+ {{ /if }}
54+ {{ #if (or (includes frontend " tanstack-router" ) (includes frontend " react-router" ) (includes frontend " nuxt" ) (includes frontend " svelte" ) (includes frontend " solid" ))}}
55+ crossDomain({ siteUrl }),
56+ {{ /if }}
57+ convex(),
58+ ],
59+ });
60+ }
61+
62+ export { createAuth };
4363
4464export const getCurrentUser = query({
45- args: {},
46- handler: async (ctx) => {
47- return authComponent.getAuthUser(ctx);
48- },
49- });
65+ args: {},
66+ returns: v.any(),
67+ handler: async function (ctx, args) {
68+ return authComponent.getAuthUser(ctx);
69+ },
70+ });
0 commit comments