diff --git a/server/src/com/cloud/acl/DomainChecker.java b/server/src/com/cloud/acl/DomainChecker.java index 8b20f3def5b..94cdfd108ad 100755 --- a/server/src/com/cloud/acl/DomainChecker.java +++ b/server/src/com/cloud/acl/DomainChecker.java @@ -110,7 +110,10 @@ public class DomainChecker extends AdapterBase implements SecurityChecker { // Domain admin and regular user can delete/modify only templates created by them if (accessType != null && accessType == AccessType.ModifyEntry) { if (!BaseCmd.isRootAdmin(caller.getType()) && owner.getId() != caller.getId()) { - throw new PermissionDeniedException("Domain Admin and regular users can modify only their own Public templates"); + // For projects check if the caller account can access the project account + if (owner.getType() != Account.ACCOUNT_TYPE_PROJECT || !(_projectMgr.canAccessProjectAccount(caller, owner.getId()))) { + throw new PermissionDeniedException("Domain Admin and regular users can modify only their own Public templates"); + } } } }