From 506fbc02b5edace27eaca761b7e2459ac88b3425 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 11 Sep 2026 11:31:02 +0200 Subject: [PATCH] server: remove user-project mappings when delete a project --- .../main/java/com/cloud/projects/dao/ProjectAccountDao.java | 2 +- .../java/com/cloud/projects/dao/ProjectAccountDaoImpl.java | 6 ++++-- .../main/java/com/cloud/projects/ProjectManagerImpl.java | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/projects/dao/ProjectAccountDao.java b/engine/schema/src/main/java/com/cloud/projects/dao/ProjectAccountDao.java index f4b2f6460020..0ac48b6c6fd1 100644 --- a/engine/schema/src/main/java/com/cloud/projects/dao/ProjectAccountDao.java +++ b/engine/schema/src/main/java/com/cloud/projects/dao/ProjectAccountDao.java @@ -31,7 +31,7 @@ public interface ProjectAccountDao extends GenericDao { ProjectAccountVO findByProjectIdAccountId(long projectId, long accountId); - ProjectAccountVO findByProjectIdUserId(long projectId, long accountId, long userId); + ProjectAccountVO findByProjectIdUserId(long projectId, long accountId, Long userId); boolean canUserAccessProjectAccount(long accountId, long userId, long projectAccountId); diff --git a/engine/schema/src/main/java/com/cloud/projects/dao/ProjectAccountDaoImpl.java b/engine/schema/src/main/java/com/cloud/projects/dao/ProjectAccountDaoImpl.java index b6eb6d44cea8..739882c03c5d 100644 --- a/engine/schema/src/main/java/com/cloud/projects/dao/ProjectAccountDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/projects/dao/ProjectAccountDaoImpl.java @@ -108,10 +108,12 @@ public ProjectAccountVO findByProjectIdAccountId(long projectId, long accountId) } @Override - public ProjectAccountVO findByProjectIdUserId(long projectId, long accountId, long userId) { + public ProjectAccountVO findByProjectIdUserId(long projectId, long accountId, Long userId) { SearchCriteria sc = AllFieldsSearch.create(); sc.setParameters("projectId", projectId); - sc.setParameters("userId", userId); + if (userId != null) { + sc.setParameters("userId", userId); + } sc.setParameters("accountId", accountId); return findOneBy(sc); diff --git a/server/src/main/java/com/cloud/projects/ProjectManagerImpl.java b/server/src/main/java/com/cloud/projects/ProjectManagerImpl.java index d165f0cd1b6b..fb00e7282bcc 100644 --- a/server/src/main/java/com/cloud/projects/ProjectManagerImpl.java +++ b/server/src/main/java/com/cloud/projects/ProjectManagerImpl.java @@ -449,7 +449,7 @@ public Boolean doInTransaction(TransactionStatus status) { @Override public boolean unassignAccountFromProject(long projectId, long accountId) { - ProjectAccountVO projectAccount = _projectAccountDao.findByProjectIdAccountId(projectId, accountId); + ProjectAccountVO projectAccount = _projectAccountDao.findByProjectIdUserId(projectId, accountId, null); if (projectAccount == null) { logger.debug("Account id=" + accountId + " is not assigned to project id=" + projectId + " so no need to unassign"); return true;