feat(core): Allow transferring user's data to team project when deleting them (no-changelog) (#13941)

This commit is contained in:
Ricardo Espinoza
2025-03-18 15:25:40 -04:00
committed by GitHub
parent 24d8eac85d
commit 5633502c63
2 changed files with 85 additions and 11 deletions

View File

@@ -189,9 +189,9 @@ export class UsersController {
let transfereeId;
if (transferId) {
const transfereePersonalProject = await this.projectRepository.findOneBy({ id: transferId });
const transfereeProject = await this.projectRepository.findOneBy({ id: transferId });
if (!transfereePersonalProject) {
if (!transfereeProject) {
throw new NotFoundError(
'Request to delete a user failed because the transferee project was not found in DB',
);
@@ -199,8 +199,7 @@ export class UsersController {
const transferee = await this.userRepository.findOneByOrFail({
projectRelations: {
projectId: transfereePersonalProject.id,
role: 'project:personalOwner',
projectId: transfereeProject.id,
},
});
@@ -209,25 +208,23 @@ export class UsersController {
await this.userService.getManager().transaction(async (trx) => {
await this.workflowService.transferAll(
personalProjectToDelete.id,
transfereePersonalProject.id,
transfereeProject.id,
trx,
);
await this.credentialsService.transferAll(
personalProjectToDelete.id,
transfereePersonalProject.id,
transfereeProject.id,
trx,
);
await this.folderService.transferAllFoldersToProject(
personalProjectToDelete.id,
transfereePersonalProject.id,
transfereeProject.id,
trx,
);
});
await this.projectService.clearCredentialCanUseExternalSecretsCache(
transfereePersonalProject.id,
);
await this.projectService.clearCredentialCanUseExternalSecretsCache(transfereeProject.id);
}
const [ownedSharedWorkflows, ownedSharedCredentials] = await Promise.all([