mirror of
https://github.com/documenso/documenso.git
synced 2025-11-14 16:51:38 +10:00
wip
This commit is contained in:
66
apps/remix/server/trpc/trpc-context.ts
Normal file
66
apps/remix/server/trpc/trpc-context.ts
Normal file
@ -0,0 +1,66 @@
|
||||
import type { Context } from 'hono';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { getSession } from '@documenso/auth/server/lib/utils/get-session';
|
||||
import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
import { extractRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
import type { TrpcContext } from '@documenso/trpc/server/context';
|
||||
|
||||
type CreateTrpcContextOptions = {
|
||||
c: Context;
|
||||
requestSource: 'app' | 'apiV1' | 'apiV2';
|
||||
};
|
||||
|
||||
/**
|
||||
* For trpc that uses @documenso/auth and Hono.
|
||||
*/
|
||||
export const createHonoTrpcContext = async ({
|
||||
c,
|
||||
requestSource,
|
||||
}: CreateTrpcContextOptions): Promise<TrpcContext> => {
|
||||
const { session, user } = await getSession(c);
|
||||
|
||||
const req = c.req.raw;
|
||||
|
||||
const metadata: ApiRequestMetadata = {
|
||||
requestMetadata: extractRequestMetadata(req),
|
||||
source: requestSource,
|
||||
auth: null,
|
||||
};
|
||||
|
||||
const rawTeamId = req.headers.get('x-team-id') || undefined;
|
||||
|
||||
const teamId = z.coerce
|
||||
.number()
|
||||
.optional()
|
||||
.catch(() => undefined)
|
||||
.parse(rawTeamId);
|
||||
|
||||
if (!session) {
|
||||
return {
|
||||
session: null,
|
||||
user: null,
|
||||
teamId,
|
||||
req,
|
||||
metadata,
|
||||
};
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
return {
|
||||
session: null,
|
||||
user: null,
|
||||
teamId,
|
||||
req,
|
||||
metadata,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
session,
|
||||
user, // Todo
|
||||
teamId,
|
||||
req,
|
||||
metadata,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user