mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 10:46:58 +08:00
Merge pull request #7042 from swordqiu/feature/qj-filter-jointable-project-for-user-group
feature: project filter that list jointable projects for user or group
This commit is contained in:
@@ -151,6 +151,9 @@ type ProjectListInput struct {
|
||||
|
||||
UserFilterListInput
|
||||
GroupFilterListInput
|
||||
|
||||
// 过滤出指定用户或者组可以加入的项目
|
||||
Jointable *bool `json:"jointable"`
|
||||
}
|
||||
|
||||
type DomainListInput struct {
|
||||
|
||||
@@ -233,7 +233,17 @@ func (manager *SProjectManager) ListItemFilter(
|
||||
}
|
||||
}
|
||||
subq := AssignmentManager.fetchUserProjectIdsQuery(userObj.GetId())
|
||||
q = q.In("id", subq.SubQuery())
|
||||
if query.Jointable != nil && *query.Jointable {
|
||||
user := userObj.(*SUser)
|
||||
if user.DomainId == api.DEFAULT_DOMAIN_ID {
|
||||
q = q.Equals("domain_id", api.DEFAULT_DOMAIN_ID)
|
||||
} else {
|
||||
q = q.In("domain_id", []string{user.DomainId, api.DEFAULT_DOMAIN_ID})
|
||||
}
|
||||
q = q.NotIn("id", subq.SubQuery())
|
||||
} else {
|
||||
q = q.In("id", subq.SubQuery())
|
||||
}
|
||||
}
|
||||
|
||||
groupStr := query.Group
|
||||
@@ -247,7 +257,17 @@ func (manager *SProjectManager) ListItemFilter(
|
||||
}
|
||||
}
|
||||
subq := AssignmentManager.fetchGroupProjectIdsQuery(groupObj.GetId())
|
||||
q = q.In("id", subq.SubQuery())
|
||||
if query.Jointable != nil && *query.Jointable {
|
||||
group := groupObj.(*SGroup)
|
||||
if group.DomainId == api.DEFAULT_DOMAIN_ID {
|
||||
q = q.Equals("domain_id", api.DEFAULT_DOMAIN_ID)
|
||||
} else {
|
||||
q = q.In("domain_id", []string{group.DomainId, api.DEFAULT_DOMAIN_ID})
|
||||
}
|
||||
q = q.NotIn("id", subq.SubQuery())
|
||||
} else {
|
||||
q = q.In("id", subq.SubQuery())
|
||||
}
|
||||
}
|
||||
|
||||
return q, nil
|
||||
|
||||
Reference in New Issue
Block a user