mirror of
https://github.com/documenso/documenso.git
synced 2026-07-25 01:15:49 +10:00
63 lines
1.6 KiB
TypeScript
63 lines
1.6 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(),
|
|
},
|
|
});
|
|
}
|
|
};
|