mirror of
https://github.com/documenso/documenso.git
synced 2026-07-25 09:25:08 +10:00
feat: allow admins to create users (#2082)
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { jobsClient } from '@documenso/lib/jobs/client';
|
||||
import { createAdminUser } from '@documenso/lib/server-only/user/create-admin-user';
|
||||
|
||||
import { adminProcedure } from '../trpc';
|
||||
import { ZCreateUserRequestSchema, ZCreateUserResponseSchema } from './create-user.types';
|
||||
|
||||
export const createUserRoute = adminProcedure
|
||||
.input(ZCreateUserRequestSchema)
|
||||
.output(ZCreateUserResponseSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { email, name } = input;
|
||||
|
||||
const user = await createAdminUser({
|
||||
name,
|
||||
email,
|
||||
});
|
||||
|
||||
ctx.logger.info({
|
||||
createdUserId: user.id,
|
||||
});
|
||||
|
||||
await jobsClient.triggerJob({
|
||||
name: 'send.admin.user.created.email',
|
||||
payload: {
|
||||
userId: user.id,
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
userId: user.id,
|
||||
};
|
||||
});
|
||||
@@ -0,0 +1,15 @@
|
||||
import { ZNameSchema } from '@documenso/lib/constants/auth';
|
||||
import { z } from 'zod';
|
||||
|
||||
export const ZCreateUserRequestSchema = z.object({
|
||||
email: z.string().email().min(1),
|
||||
name: ZNameSchema,
|
||||
});
|
||||
|
||||
export type TCreateUserRequest = z.infer<typeof ZCreateUserRequestSchema>;
|
||||
|
||||
export const ZCreateUserResponseSchema = z.object({
|
||||
userId: z.number(),
|
||||
});
|
||||
|
||||
export type TCreateUserResponse = z.infer<typeof ZCreateUserResponseSchema>;
|
||||
@@ -2,6 +2,7 @@ import { router } from '../trpc';
|
||||
import { createAdminOrganisationRoute } from './create-admin-organisation';
|
||||
import { createStripeCustomerRoute } from './create-stripe-customer';
|
||||
import { createSubscriptionClaimRoute } from './create-subscription-claim';
|
||||
import { createUserRoute } from './create-user';
|
||||
import { deleteDocumentRoute } from './delete-document';
|
||||
import { deleteOrganisationRoute } from './delete-organisation';
|
||||
import { deleteAdminOrganisationMemberRoute } from './delete-organisation-member';
|
||||
@@ -64,6 +65,7 @@ export const adminRouter = router({
|
||||
},
|
||||
user: {
|
||||
get: getUserRoute,
|
||||
create: createUserRoute,
|
||||
update: updateUserRoute,
|
||||
delete: deleteUserRoute,
|
||||
enable: enableUserRoute,
|
||||
|
||||
Reference in New Issue
Block a user