Sfoglia il codice sorgente

Refactors ds permissions to a filter.

Leonard Gram 7 anni fa
parent
commit
ccfcf02e33
2 ha cambiato i file con 16 aggiunte e 14 eliminazioni
  1. 10 14
      pkg/api/datasources.go
  2. 6 0
      pkg/models/datasource.go

+ 10 - 14
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 {

+ 6 - 0
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
+}