diff --git a/pkg/services/annotations/annotationsimpl/xorm_store.go b/pkg/services/annotations/annotationsimpl/xorm_store.go index 92fb80507c7..998236e19ea 100644 --- a/pkg/services/annotations/annotationsimpl/xorm_store.go +++ b/pkg/services/annotations/annotationsimpl/xorm_store.go @@ -12,7 +12,6 @@ import ( "github.com/grafana/grafana/pkg/services/sqlstore/migrations" "github.com/grafana/grafana/pkg/services/sqlstore/migrator" - "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/infra/db" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/services/annotations" @@ -366,7 +365,7 @@ func (r *xormRepositoryImpl) Get(ctx context.Context, query annotations.ItemQuer } } - acFilter, acParams := r.getAccessControlFilter(query.SignedInUser, accessResources) + acFilter, acParams := r.getAccessControlFilter(accessResources, query.DashboardUID) if acFilter != "" { sql.WriteString(fmt.Sprintf(" AND (%s)", acFilter)) } @@ -390,7 +389,7 @@ func (r *xormRepositoryImpl) Get(ctx context.Context, query annotations.ItemQuer return items, err } -func (r *xormRepositoryImpl) getAccessControlFilter(user identity.Requester, accessResources *accesscontrol.AccessResources) (string, []any) { +func (r *xormRepositoryImpl) getAccessControlFilter(accessResources *accesscontrol.AccessResources, dashboardUID string) (string, []any) { if accessResources.SkipAccessControlFilter { return "", nil } @@ -406,9 +405,14 @@ func (r *xormRepositoryImpl) getAccessControlFilter(user identity.Requester, acc if len(accessResources.Dashboards) == 0 { filters = append(filters, "1=0") // empty set } else { - filters = append(filters, fmt.Sprintf("a.dashboard_uid IN (%s)", strings.Repeat("?,", len(accessResources.Dashboards)-1)+"?")) - for uid := range accessResources.Dashboards { - params = append(params, uid) + if dashboardUID != "" { + filters = append(filters, "a.dashboard_uid = ?") + params = append(params, dashboardUID) + } else { + filters = append(filters, fmt.Sprintf("a.dashboard_uid IN (%s)", strings.Repeat("?,", len(accessResources.Dashboards)-1)+"?")) + for uid := range accessResources.Dashboards { + params = append(params, uid) + } } } }