@Module({
imports: [
DatabaseModule,
BetterAuthModule.forRootAsync({
imports: [DatabaseModule, ConfigModule],
useFactory: (database: NodePgDatabase, configService: ConfigService) => ({
auth: betterAuth({
emailAndPassword: {
enabled: true,
},
basePath: "/auth",
trustedOrigins:
configService
.get<string>("ALLOWED_ORIGINS")
?.split(",")
?.map((origin) => origin.trim())
?.filter((origin) => origin.length > 0) || [],
database: drizzleAdapter(database, { provider: "pg" }),
socialProviders: {
github: {
clientId: configService.getOrThrow("GITHUB_CLIENT_ID"),
clientSecret: configService.getOrThrow("GITHUB_CLIENT_SECRET"),
},
google: {
clientId: configService.getOrThrow("GOOGLE_CLIENT_ID"),
clientSecret: configService.getOrThrow("GOOGLE_CLIENT_SECRET"),
},
},
}),
}),
inject: [DATABASE_CONNECTION, ConfigService],
}),
],
exports: [BetterAuthModule],
})
export class AuthModule {}
@Module({
imports: [
DatabaseModule,
BetterAuthModule.forRootAsync({
imports: [DatabaseModule, ConfigModule],
useFactory: (database: NodePgDatabase, configService: ConfigService) => ({
auth: betterAuth({
emailAndPassword: {
enabled: true,
},
basePath: "/auth",
trustedOrigins:
configService
.get<string>("ALLOWED_ORIGINS")
?.split(",")
?.map((origin) => origin.trim())
?.filter((origin) => origin.length > 0) || [],
database: drizzleAdapter(database, { provider: "pg" }),
socialProviders: {
github: {
clientId: configService.getOrThrow("GITHUB_CLIENT_ID"),
clientSecret: configService.getOrThrow("GITHUB_CLIENT_SECRET"),
},
google: {
clientId: configService.getOrThrow("GOOGLE_CLIENT_ID"),
clientSecret: configService.getOrThrow("GOOGLE_CLIENT_SECRET"),
},
},
}),
}),
inject: [DATABASE_CONNECTION, ConfigService],
}),
],
exports: [BetterAuthModule],
})
export class AuthModule {}