Files
sign/packages/trpc/server/api-token-router/router.ts

92 lines
2.5 KiB
TypeScript
Raw Normal View History

2023-11-24 13:59:33 +02:00
import { TRPCError } from '@trpc/server';
import { createApiToken } from '@documenso/lib/server-only/public-api/create-api-token';
import { deleteTokenById } from '@documenso/lib/server-only/public-api/delete-api-token-by-id';
2023-11-27 12:50:21 +02:00
import { getUserTokens } from '@documenso/lib/server-only/public-api/get-all-user-tokens';
2023-11-24 13:59:33 +02:00
import { getApiTokenById } from '@documenso/lib/server-only/public-api/get-api-token-by-id';
import { authenticatedProcedure, router } from '../trpc';
import {
ZCreateTokenMutationSchema,
ZDeleteTokenByIdMutationSchema,
ZGetApiTokenByIdQuerySchema,
} from './schema';
export const apiTokenRouter = router({
2023-11-27 12:50:21 +02:00
getTokens: authenticatedProcedure.query(async ({ ctx }) => {
try {
return await getUserTokens({ userId: ctx.user.id });
2024-03-30 14:00:34 +08:00
} catch (err) {
console.error(err);
2023-11-27 12:50:21 +02:00
throw new TRPCError({
code: 'BAD_REQUEST',
message: 'We were unable to find your API tokens. Please try again.',
});
}
}),
2023-11-24 13:59:33 +02:00
getTokenById: authenticatedProcedure
.input(ZGetApiTokenByIdQuerySchema)
.query(async ({ input, ctx }) => {
try {
const { id } = input;
return await getApiTokenById({
id,
userId: ctx.user.id,
});
2024-03-30 14:00:34 +08:00
} catch (err) {
console.error(err);
2023-11-24 13:59:33 +02:00
throw new TRPCError({
code: 'BAD_REQUEST',
message: 'We were unable to find this API token. Please try again.',
});
}
}),
2023-11-24 13:59:33 +02:00
createToken: authenticatedProcedure
.input(ZCreateTokenMutationSchema)
.mutation(async ({ input, ctx }) => {
try {
2024-02-22 13:39:34 +11:00
const { tokenName, teamId, expirationDate } = input;
2024-02-09 11:32:54 +02:00
2023-11-24 13:59:33 +02:00
return await createApiToken({
userId: ctx.user.id,
2024-02-22 13:39:34 +11:00
teamId,
2023-11-24 13:59:33 +02:00
tokenName,
2024-02-22 13:39:34 +11:00
expiresIn: expirationDate,
2023-11-24 13:59:33 +02:00
});
2024-03-30 14:00:34 +08:00
} catch (err) {
console.error(err);
2023-11-24 13:59:33 +02:00
throw new TRPCError({
code: 'BAD_REQUEST',
message: 'We were unable to create an API token. Please try again.',
});
}
}),
2023-11-24 13:59:33 +02:00
deleteTokenById: authenticatedProcedure
.input(ZDeleteTokenByIdMutationSchema)
.mutation(async ({ input, ctx }) => {
try {
2024-02-22 13:39:34 +11:00
const { id, teamId } = input;
2023-11-24 13:59:33 +02:00
return await deleteTokenById({
2023-11-24 13:59:33 +02:00
id,
2024-02-22 13:39:34 +11:00
teamId,
2023-11-24 13:59:33 +02:00
userId: ctx.user.id,
});
2024-03-30 14:00:34 +08:00
} catch (err) {
console.error(err);
2023-11-24 13:59:33 +02:00
throw new TRPCError({
code: 'BAD_REQUEST',
message: 'We were unable to delete this API Token. Please try again.',
});
}
}),
});