import { prisma } from '@documenso/prisma'; import { TEAM_MEMBER_ROLE_PERMISSIONS_MAP } from '../../constants/teams'; import { AppError, AppErrorCode } from '../../errors/app-error'; import { buildTeamWhereQuery } from '../../utils/teams'; export type UpdateTeamEmailOptions = { userId: number; teamId: number; data: { name: string; }; }; export const updateTeamEmail = async ({ userId, teamId, data, }: UpdateTeamEmailOptions): Promise => { const team = await prisma.team.findFirst({ where: buildTeamWhereQuery({ teamId, userId, roles: TEAM_MEMBER_ROLE_PERMISSIONS_MAP['MANAGE_TEAM'], }), include: { teamEmail: true, }, }); if (!team) { throw new AppError(AppErrorCode.NOT_FOUND); } if (!team.teamEmail) { throw new AppError(AppErrorCode.NOT_FOUND, { message: 'Team email does not exist', }); } await prisma.teamEmail.update({ where: { teamId, }, data: { // Note: Never allow the email to be updated without re-verifying via email. name: data.name, }, }); };