Files
turbostarter/apps/web/src/lib/auth/server.ts
Alejandro Gutiérrez 3527e732d4 feat: turbostarter boilerplate
Production-ready Next.js boilerplate with:
- Runtime env validation (fail-fast on missing vars)
- Feature-gated config (S3, Stripe, email, OAuth)
- Docker + Coolify deployment pipeline
- PostgreSQL + pgvector, MinIO S3, Better Auth
- TypeScript strict mode (no ignoreBuildErrors)
- i18n (en/es), AI modules, billing, monitoring

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 01:01:55 +01:00

64 lines
1.4 KiB
TypeScript

import { headers } from "next/headers";
import { cache } from "react";
import { auth } from "@turbostarter/auth/server";
import { logger } from "@turbostarter/shared/logger";
const getHeaders = async () => {
const newHeaders = new Headers(await headers());
newHeaders.set("x-client-platform", "web-server");
return newHeaders;
};
export const getSession = cache(async () => {
const data = await auth.api.getSession({
headers: await getHeaders(),
});
return {
session: data?.session ?? null,
user: data?.user ?? null,
};
});
export const getOrganization = cache(
async ({ id, slug }: { slug?: string; id?: string }) => {
try {
return await auth.api.getFullOrganization({
query: {
organizationId: id,
organizationSlug: slug,
},
headers: await getHeaders(),
});
} catch (error) {
logger.error(error);
return null;
}
},
);
export const getInvitation = cache(async ({ id }: { id: string }) => {
try {
return await auth.api.getInvitation({
query: {
id,
},
headers: await getHeaders(),
});
} catch {
return null;
}
});
export const getUser = cache(async ({ id }: { id: string }) => {
try {
return await auth.api.getUser({
query: { id },
headers: await getHeaders(),
});
} catch {
return null;
}
});