Files
sign/packages/lib/server-only/organisation/accept-organisation-invitation.ts

44 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-03-31 17:07:45 +08:00
import { prisma } from '@documenso/prisma';
import { OrganisationMemberStatus } from '@documenso/prisma/client';
export type AcceptOrganisationInvitationOptions = {
userId: number;
organisationId: string;
};
export const acceptOrganisationInvitation = async ({
userId,
organisationId,
}: AcceptOrganisationInvitationOptions) => {
await prisma.$transaction(async (tx) => {
const user = await tx.user.findFirstOrThrow({
where: {
id: userId,
},
});
const organisationMemberInvite = await tx.organisationMemberInvite.findFirstOrThrow({
where: {
organisationId,
email: user.email,
},
});
await tx.organisationMember.create({
data: {
name: user.name ?? '',
status: OrganisationMemberStatus.ACTIVE,
organisationId: organisationMemberInvite.organisationId,
userId: user.id,
role: organisationMemberInvite.role,
},
});
await tx.organisationMemberInvite.delete({
where: {
id: organisationMemberInvite.id,
},
});
});
};