Files
sign/packages/trpc/server/admin-router/router.ts

123 lines
4.0 KiB
TypeScript
Raw Normal View History

import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
2024-03-03 01:55:33 +11:00
import { findDocuments } from '@documenso/lib/server-only/admin/get-all-documents';
import { getEntireDocument } from '@documenso/lib/server-only/admin/get-entire-document';
2024-03-03 01:55:33 +11:00
import { updateRecipient } from '@documenso/lib/server-only/admin/update-recipient';
2023-09-29 17:26:37 +01:00
import { updateUser } from '@documenso/lib/server-only/admin/update-user';
2024-03-03 01:55:33 +11:00
import { sealDocument } from '@documenso/lib/server-only/document/seal-document';
2024-03-13 11:30:20 +05:30
import { sendDeleteEmail } from '@documenso/lib/server-only/document/send-delete-email';
import { superDeleteDocument } from '@documenso/lib/server-only/document/super-delete-document';
2024-02-23 10:47:01 +00:00
import { upsertSiteSetting } from '@documenso/lib/server-only/site-settings/upsert-site-setting';
2024-03-03 01:55:33 +11:00
import { deleteUser } from '@documenso/lib/server-only/user/delete-user';
import { disableUser } from '@documenso/lib/server-only/user/disable-user';
import { enableUser } from '@documenso/lib/server-only/user/enable-user';
2024-03-03 01:55:33 +11:00
import { getUserById } from '@documenso/lib/server-only/user/get-user-by-id';
import { isDocumentCompleted } from '@documenso/lib/utils/document';
2023-09-29 17:26:37 +01:00
2023-10-11 12:32:33 +03:00
import { adminProcedure, router } from '../trpc';
2024-03-03 01:55:33 +11:00
import {
ZAdminDeleteDocumentMutationSchema,
2024-03-03 01:55:33 +11:00
ZAdminDeleteUserMutationSchema,
ZAdminDisableUserMutationSchema,
ZAdminEnableUserMutationSchema,
2024-03-03 01:55:33 +11:00
ZAdminFindDocumentsQuerySchema,
ZAdminResealDocumentMutationSchema,
ZAdminUpdateProfileMutationSchema,
ZAdminUpdateRecipientMutationSchema,
ZAdminUpdateSiteSettingMutationSchema,
} from './schema';
2023-09-29 17:26:37 +01:00
export const adminRouter = router({
2024-03-03 01:55:33 +11:00
findDocuments: adminProcedure.input(ZAdminFindDocumentsQuerySchema).query(async ({ input }) => {
const { query, page, perPage } = input;
2024-03-03 01:55:33 +11:00
return await findDocuments({ query, page, perPage });
2024-03-03 01:55:33 +11:00
}),
2023-10-11 12:32:33 +03:00
updateUser: adminProcedure
2024-03-03 01:55:33 +11:00
.input(ZAdminUpdateProfileMutationSchema)
2023-10-11 12:32:33 +03:00
.mutation(async ({ input }) => {
2023-09-29 17:26:37 +01:00
const { id, name, email, roles } = input;
2024-12-06 16:01:24 +09:00
return await updateUser({ id, name, email, roles });
2023-09-29 17:26:37 +01:00
}),
2024-02-23 10:47:01 +00:00
2024-03-03 01:55:33 +11:00
updateRecipient: adminProcedure
.input(ZAdminUpdateRecipientMutationSchema)
.mutation(async ({ input }) => {
const { id, name, email } = input;
2024-12-06 16:01:24 +09:00
return await updateRecipient({ id, name, email });
2024-03-03 01:55:33 +11:00
}),
2024-02-23 10:47:01 +00:00
updateSiteSetting: adminProcedure
2024-03-03 01:55:33 +11:00
.input(ZAdminUpdateSiteSettingMutationSchema)
2024-02-23 10:47:01 +00:00
.mutation(async ({ ctx, input }) => {
2024-12-06 16:01:24 +09:00
const { id, enabled, data } = input;
return await upsertSiteSetting({
id,
enabled,
data,
userId: ctx.user.id,
});
2024-02-23 10:47:01 +00:00
}),
2024-03-03 01:55:33 +11:00
resealDocument: adminProcedure
.input(ZAdminResealDocumentMutationSchema)
.mutation(async ({ input }) => {
const { id } = input;
2024-12-06 16:01:24 +09:00
const document = await getEntireDocument({ id });
const isResealing = isDocumentCompleted(document.status);
2024-12-06 16:01:24 +09:00
return await sealDocument({ documentId: id, isResealing });
2024-03-03 01:55:33 +11:00
}),
enableUser: adminProcedure.input(ZAdminEnableUserMutationSchema).mutation(async ({ input }) => {
const { id } = input;
const user = await getUserById({ id }).catch(() => null);
if (!user) {
throw new AppError(AppErrorCode.NOT_FOUND, {
message: 'User not found',
});
}
return await enableUser({ id });
}),
disableUser: adminProcedure.input(ZAdminDisableUserMutationSchema).mutation(async ({ input }) => {
const { id } = input;
const user = await getUserById({ id }).catch(() => null);
if (!user) {
throw new AppError(AppErrorCode.NOT_FOUND, {
message: 'User not found',
});
}
return await disableUser({ id });
}),
2024-03-03 01:55:33 +11:00
deleteUser: adminProcedure.input(ZAdminDeleteUserMutationSchema).mutation(async ({ input }) => {
const { id } = input;
2024-03-03 01:55:33 +11:00
2024-12-06 16:01:24 +09:00
return await deleteUser({ id });
2024-03-03 01:55:33 +11:00
}),
deleteDocument: adminProcedure
.input(ZAdminDeleteDocumentMutationSchema)
.mutation(async ({ ctx, input }) => {
const { id, reason } = input;
2024-12-06 16:01:24 +09:00
await sendDeleteEmail({ documentId: id, reason });
return await superDeleteDocument({
id,
2025-01-02 15:33:37 +11:00
requestMetadata: ctx.metadata.requestMetadata,
2024-12-06 16:01:24 +09:00
});
}),
2023-09-29 17:26:37 +01:00
});