mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 00:03:33 +10:00
feat: add template and field endpoints (#1572)
This commit is contained in:
@ -5,6 +5,8 @@ import type { OpenApiMeta } from 'trpc-openapi';
|
||||
import { AppError, genericErrorCodeToTrpcErrorCodeMap } from '@documenso/lib/errors/app-error';
|
||||
import { isAdmin } from '@documenso/lib/next-auth/guards/is-admin';
|
||||
import { getApiTokenByToken } from '@documenso/lib/server-only/public-api/get-api-token-by-token';
|
||||
import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
|
||||
import type { TrpcContext } from './context';
|
||||
|
||||
@ -62,8 +64,23 @@ export const authenticatedMiddleware = t.middleware(async ({ ctx, next }) => {
|
||||
ctx: {
|
||||
...ctx,
|
||||
user: apiToken.user,
|
||||
teamId: apiToken.teamId || undefined,
|
||||
session: null,
|
||||
source: 'api',
|
||||
metadata: {
|
||||
...ctx.metadata,
|
||||
auditUser: apiToken.team
|
||||
? {
|
||||
id: null,
|
||||
email: null,
|
||||
name: apiToken.team.name,
|
||||
}
|
||||
: {
|
||||
id: apiToken.user.id,
|
||||
email: apiToken.user.email,
|
||||
name: apiToken.user.name,
|
||||
},
|
||||
auth: 'api',
|
||||
} satisfies ApiRequestMetadata,
|
||||
},
|
||||
});
|
||||
}
|
||||
@ -71,7 +88,7 @@ export const authenticatedMiddleware = t.middleware(async ({ ctx, next }) => {
|
||||
if (!ctx.session) {
|
||||
throw new TRPCError({
|
||||
code: 'UNAUTHORIZED',
|
||||
message: 'You must be logged in to perform this action.',
|
||||
message: 'Invalid session or API token.',
|
||||
});
|
||||
}
|
||||
|
||||
@ -80,17 +97,39 @@ export const authenticatedMiddleware = t.middleware(async ({ ctx, next }) => {
|
||||
...ctx,
|
||||
user: ctx.user,
|
||||
session: ctx.session,
|
||||
source: 'app',
|
||||
metadata: {
|
||||
...ctx.metadata,
|
||||
auditUser: {
|
||||
id: ctx.user.id,
|
||||
name: ctx.user.name,
|
||||
email: ctx.user.email,
|
||||
},
|
||||
auth: 'session',
|
||||
} satisfies ApiRequestMetadata,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
export const maybeAuthenticatedMiddleware = t.middleware(async ({ ctx, next }) => {
|
||||
const requestMetadata = extractNextApiRequestMetadata(ctx.req);
|
||||
|
||||
return await next({
|
||||
ctx: {
|
||||
...ctx,
|
||||
user: ctx.user,
|
||||
session: ctx.session,
|
||||
metadata: {
|
||||
...ctx.metadata,
|
||||
auditUser: ctx.user
|
||||
? {
|
||||
id: ctx.user.id,
|
||||
name: ctx.user.name,
|
||||
email: ctx.user.email,
|
||||
}
|
||||
: undefined,
|
||||
requestMetadata,
|
||||
auth: ctx.session ? 'session' : null,
|
||||
} satisfies ApiRequestMetadata,
|
||||
},
|
||||
});
|
||||
});
|
||||
@ -117,6 +156,15 @@ export const adminMiddleware = t.middleware(async ({ ctx, next }) => {
|
||||
...ctx,
|
||||
user: ctx.user,
|
||||
session: ctx.session,
|
||||
metadata: {
|
||||
...ctx.metadata,
|
||||
auditUser: {
|
||||
id: ctx.user.id,
|
||||
name: ctx.user.name,
|
||||
email: ctx.user.email,
|
||||
},
|
||||
auth: 'session',
|
||||
} satisfies ApiRequestMetadata,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user