From 1f2099ac013f230cd65e871b6a53ce8eeb6c4476 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Mon, 19 Apr 2021 15:13:39 +0800 Subject: [PATCH] fix(region): nas owner id fix --- pkg/compute/models/access_group_caches.go | 10 +++++++++- pkg/compute/models/mount_targets.go | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/pkg/compute/models/access_group_caches.go b/pkg/compute/models/access_group_caches.go index 2656db4dda..c48852d585 100644 --- a/pkg/compute/models/access_group_caches.go +++ b/pkg/compute/models/access_group_caches.go @@ -166,10 +166,18 @@ func (manager *SAccessGroupCacheManager) QueryDistinctExtraField(q *sqlchemy.SQu return q, httperrors.ErrNotFound } +func (self *SAccessGroupCache) GetOwnerId() mcclient.IIdentityProvider { + ag, err := self.GetAccessGroup() + if err != nil { + return &db.SOwnerId{} + } + return &db.SOwnerId{DomainId: ag.DomainId} +} + func (manager *SAccessGroupCacheManager) FilterByOwner(q *sqlchemy.SQuery, userCred mcclient.IIdentityProvider, scope rbacutils.TRbacScope) *sqlchemy.SQuery { if userCred != nil { sq := AccessGroupManager.Query("id") - if len(userCred.GetProjectDomainId()) > 0 { + if scope == rbacutils.ScopeDomain && len(userCred.GetProjectDomainId()) > 0 { sq = sq.Equals("domain_id", userCred.GetProjectDomainId()) return q.In("access_group_id", sq) } diff --git a/pkg/compute/models/mount_targets.go b/pkg/compute/models/mount_targets.go index c69c22fcfc..ea3cb9f77c 100644 --- a/pkg/compute/models/mount_targets.go +++ b/pkg/compute/models/mount_targets.go @@ -272,10 +272,18 @@ func (manager *SMountTargetManager) QueryDistinctExtraField(q *sqlchemy.SQuery, return q, httperrors.ErrNotFound } +func (self *SMountTarget) GetOwnerId() mcclient.IIdentityProvider { + fs, err := self.GetFileSystem() + if err != nil { + return &db.SOwnerId{} + } + return &db.SOwnerId{DomainId: fs.DomainId} +} + func (manager *SMountTargetManager) FilterByOwner(q *sqlchemy.SQuery, userCred mcclient.IIdentityProvider, scope rbacutils.TRbacScope) *sqlchemy.SQuery { if userCred != nil { sq := FileSystemManager.Query("id") - if len(userCred.GetProjectDomainId()) > 0 { + if scope == rbacutils.ScopeDomain && len(userCred.GetProjectDomainId()) > 0 { sq = sq.Equals("domain_id", userCred.GetProjectDomainId()) return q.In("file_system_id", sq) }