Search: Fix slow query when user does not have roles assigned (#86791)

* Search: Fix slow query when user does not have roles assigned

* Check all required actions and skip if not found
This commit is contained in:
Alexander Zobnin
2024-04-24 13:23:08 +03:00
committed by GitHub
parent 1e1c62fef1
commit 60ed6bfc33
+14 -1
View File
@@ -114,8 +114,21 @@ func (f *accessControlDashboardPermissionFilter) Where() (string, []any) {
return f.where.string, f.where.params
}
// Check if user has no permissions required for search to skip expensive query
func (f *accessControlDashboardPermissionFilter) hasRequiredActions() bool {
permissions := f.user.GetPermissions()
requiredActions := append(f.folderActions, f.dashboardActions...)
for _, action := range requiredActions {
if _, ok := permissions[action]; ok {
return true
}
}
return false
}
func (f *accessControlDashboardPermissionFilter) buildClauses() {
if f.user == nil || f.user.IsNil() || len(f.user.GetPermissions()) == 0 {
if f.user == nil || f.user.IsNil() || !f.hasRequiredActions() {
f.where = clause{string: "(1 = 0)"}
return
}