mirror of
https://github.com/documenso/documenso.git
synced 2026-07-24 17:04:12 +10:00
67 lines
1.7 KiB
TypeScript
67 lines
1.7 KiB
TypeScript
import { prisma } from '@documenso/prisma';
|
|
|
|
const LEGACY_DELETED_ACCOUNT_EMAIL = 'deleted-account@documenso.com';
|
|
|
|
export const deletedServiceAccountEmail = () => {
|
|
try {
|
|
// eslint-disable-next-line turbo/no-undeclared-env-vars
|
|
if (process.env.NEXT_PRIVATE_DELETED_SERVICE_ACCOUNT_EMAIL) {
|
|
// eslint-disable-next-line turbo/no-undeclared-env-vars
|
|
return process.env.NEXT_PRIVATE_DELETED_SERVICE_ACCOUNT_EMAIL;
|
|
}
|
|
|
|
const { hostname } = new URL(process.env.NEXT_PUBLIC_WEBAPP_URL || 'http://localhost:3000');
|
|
|
|
return `deleted-account@${hostname}`;
|
|
} catch (error) {
|
|
return LEGACY_DELETED_ACCOUNT_EMAIL;
|
|
}
|
|
};
|
|
|
|
export const deletedAccountServiceAccount = async () => {
|
|
const serviceAccount = await prisma.user.findFirst({
|
|
where: {
|
|
email: deletedServiceAccountEmail(),
|
|
},
|
|
select: {
|
|
id: true,
|
|
email: true,
|
|
ownedOrganisations: {
|
|
select: {
|
|
id: true,
|
|
teams: {
|
|
select: {
|
|
id: true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
if (!serviceAccount) {
|
|
throw new Error(
|
|
'Deleted account service account not found, have you ran the appropriate migrations?',
|
|
);
|
|
}
|
|
|
|
return serviceAccount;
|
|
};
|
|
|
|
export const migrateDeletedAccountServiceAccount = async () => {
|
|
if (deletedServiceAccountEmail() !== LEGACY_DELETED_ACCOUNT_EMAIL) {
|
|
console.log(
|
|
`Migrating deleted account service account to new email: ${deletedServiceAccountEmail()}`,
|
|
);
|
|
|
|
await prisma.user.updateMany({
|
|
where: {
|
|
email: LEGACY_DELETED_ACCOUNT_EMAIL,
|
|
},
|
|
data: {
|
|
email: deletedServiceAccountEmail(),
|
|
},
|
|
});
|
|
}
|
|
};
|