From ccfcf02e3363bd8f45cbe6189abbbb707300fc64 Mon Sep 17 00:00:00 2001 From: Leonard Gram Date: Wed, 10 Oct 2018 14:21:57 +0200 Subject: [PATCH] Refactors ds permissions to a filter. --- pkg/api/datasources.go | 24 ++++++++++-------------- pkg/models/datasource.go | 6 ++++++ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/pkg/api/datasources.go b/pkg/api/datasources.go index 3378fb5bf2e..e23f691ca2b 100644 --- a/pkg/api/datasources.go +++ b/pkg/api/datasources.go @@ -17,18 +17,21 @@ func GetDataSources(c *m.ReqContext) Response { return Error(500, "Failed to query datasources", err) } - permissions := map[int64]m.DsPermissionType{} - permissionsQuery := m.GetDataSourcePermissionsForUserQuery{User: c.SignedInUser} - if err := bus.Dispatch(&permissionsQuery); err != nil { + dsFilterQuery := m.DatasourcesPermissionFilterQuery{ + User: c.SignedInUser, + Datasources: query.Result, + } + + if err := bus.Dispatch(&dsFilterQuery); err != nil { if err != bus.ErrHandlerNotFound { - return Error(500, "failed to read datasource permissions", err) + return Error(500, "Could not get datasources", err) } - } else { - permissions = permissionsQuery.Result + + dsFilterQuery.Result = query.Result } result := make(dtos.DataSourceList, 0) - for _, ds := range query.Result { + for _, ds := range dsFilterQuery.Result { dsItem := dtos.DataSourceListItemDTO{ OrgId: ds.OrgId, Id: ds.Id, @@ -45,13 +48,6 @@ func GetDataSources(c *m.ReqContext) Response { ReadOnly: ds.ReadOnly, } - if permission, ok := permissions[ds.Id]; ok { - c.Logger.Info("Found permission", "permission", permission) - if permission == m.DsPermissionNoAccess { - continue - } - } - if plugin, exists := plugins.DataSources[ds.Type]; exists { dsItem.TypeLogoUrl = plugin.Info.Logos.Small } else { diff --git a/pkg/models/datasource.go b/pkg/models/datasource.go index b1648edbb45..488fb2fe1fa 100644 --- a/pkg/models/datasource.go +++ b/pkg/models/datasource.go @@ -217,3 +217,9 @@ type GetDataSourcePermissionsForUserQuery struct { User *SignedInUser Result map[int64]DsPermissionType } + +type DatasourcesPermissionFilterQuery struct { + User *SignedInUser + Datasources []*DataSource + Result []*DataSource +}