From 8f9a372ce23e962a63553cd39c6eaa85888a26b0 Mon Sep 17 00:00:00 2001 From: lai <11598235+unique0lai@users.noreply.github.com> Date: Tue, 9 Aug 2022 16:40:22 +0800 Subject: [PATCH] Access Control: optimize GetUserPermissions sql (#53279) * Access Control: optimize GetUserPermissions sql --- pkg/services/accesscontrol/database/database.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/services/accesscontrol/database/database.go b/pkg/services/accesscontrol/database/database.go index f056555313f..8b704ddd7bb 100644 --- a/pkg/services/accesscontrol/database/database.go +++ b/pkg/services/accesscontrol/database/database.go @@ -61,7 +61,7 @@ func (s *AccessControlStore) GetUserPermissions(ctx context.Context, query acces func userRolesFilter(orgID, userID int64, roles []string) (string, []interface{}) { params := []interface{}{} - q := `WHERE role.id IN (` + q := `INNER JOIN (` // This is an additional security. We should never have permissions granted to userID 0. // Only allow real users to get user/team permissions (anonymous/apikeys) @@ -95,7 +95,7 @@ func userRolesFilter(orgID, userID int64, roles []string) (string, []interface{} params = append(params, orgID, globalOrgID) } - q += `)` + q += `) as all_role ON role.id = all_role.role_id` return q, params }