mirror of
https://github.com/get-drexa/drive.git
synced 2025-12-01 05:51:39 +00:00
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import { createClient, type GenericCtx } from "@convex-dev/better-auth"
|
|
import { convex, crossDomain } from "@convex-dev/better-auth/plugins"
|
|
import { betterAuth } from "better-auth"
|
|
import { components } from "./_generated/api"
|
|
import type { DataModel } from "./_generated/dataModel"
|
|
import { query } from "./_generated/server"
|
|
|
|
const siteUrl = process.env.SITE_URL!
|
|
|
|
// The component client has methods needed for integrating Convex with Better Auth,
|
|
// as well as helper methods for general use.
|
|
export const authComponent = createClient<DataModel>(components.betterAuth)
|
|
|
|
export const createAuth = (
|
|
ctx: GenericCtx<DataModel>,
|
|
{ optionsOnly } = { optionsOnly: false },
|
|
) => {
|
|
return betterAuth({
|
|
// disable logging when createAuth is called just to generate options.
|
|
// this is not required, but there's a lot of noise in logs without it.
|
|
logger: {
|
|
disabled: optionsOnly,
|
|
},
|
|
trustedOrigins: [siteUrl],
|
|
database: authComponent.adapter(ctx),
|
|
// Configure simple, non-verified email/password to get started
|
|
emailAndPassword: {
|
|
enabled: true,
|
|
requireEmailVerification: false,
|
|
},
|
|
plugins: [
|
|
// The cross domain plugin is required for client side frameworks
|
|
crossDomain({ siteUrl }),
|
|
// The Convex plugin is required for Convex compatibility
|
|
convex(),
|
|
],
|
|
})
|
|
}
|
|
|
|
// Example function for getting the current user
|
|
// Feel free to edit, omit, etc.
|
|
export const getCurrentUser = query({
|
|
args: {},
|
|
handler: async (ctx) => {
|
|
return authComponent.getAuthUser(ctx)
|
|
},
|
|
})
|