mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
PublicDashboards: remove publicDashboardUID from insights event request (#60649)
This commit is contained in:
committed by
GitHub
parent
b3272fe62c
commit
34a865ebf0
@@ -42,7 +42,6 @@ func (api *Api) ViewPublicDashboard(c *models.ReqContext) response.Response {
|
|||||||
IsFolder: false,
|
IsFolder: false,
|
||||||
FolderId: dash.FolderId,
|
FolderId: dash.FolderId,
|
||||||
PublicDashboardAccessToken: pubdash.AccessToken,
|
PublicDashboardAccessToken: pubdash.AccessToken,
|
||||||
PublicDashboardUID: pubdash.Uid,
|
|
||||||
}
|
}
|
||||||
dash.Data.Get("timepicker").Set("hidden", !pubdash.TimeSelectionEnabled)
|
dash.Data.Get("timepicker").Set("hidden", !pubdash.TimeSelectionEnabled)
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ func TestAPIViewPublicDashboard(t *testing.T) {
|
|||||||
t.Run(test.Name, func(t *testing.T) {
|
t.Run(test.Name, func(t *testing.T) {
|
||||||
service := publicdashboards.NewFakePublicDashboardService(t)
|
service := publicdashboards.NewFakePublicDashboardService(t)
|
||||||
service.On("FindPublicDashboardAndDashboardByAccessToken", mock.Anything, mock.AnythingOfType("string")).
|
service.On("FindPublicDashboardAndDashboardByAccessToken", mock.Anything, mock.AnythingOfType("string")).
|
||||||
Return(&PublicDashboard{}, test.DashboardResult, test.Err).Maybe()
|
Return(&PublicDashboard{Uid: "pubdashuid"}, test.DashboardResult, test.Err).Maybe()
|
||||||
|
|
||||||
cfg := setting.NewCfg()
|
cfg := setting.NewCfg()
|
||||||
cfg.RBACEnabled = false
|
cfg.RBACEnabled = false
|
||||||
@@ -115,6 +115,9 @@ func TestAPIViewPublicDashboard(t *testing.T) {
|
|||||||
assert.Equal(t, false, dashResp.Meta.CanEdit)
|
assert.Equal(t, false, dashResp.Meta.CanEdit)
|
||||||
assert.Equal(t, false, dashResp.Meta.CanDelete)
|
assert.Equal(t, false, dashResp.Meta.CanDelete)
|
||||||
assert.Equal(t, false, dashResp.Meta.CanSave)
|
assert.Equal(t, false, dashResp.Meta.CanSave)
|
||||||
|
|
||||||
|
// publicDashboardUID should be always empty
|
||||||
|
assert.Equal(t, "", dashResp.Meta.PublicDashboardUID)
|
||||||
} else if test.FixedErrorResponse != "" {
|
} else if test.FixedErrorResponse != "" {
|
||||||
require.Equal(t, test.ExpectedHttpResponse, response.Code)
|
require.Equal(t, test.ExpectedHttpResponse, response.Code)
|
||||||
require.JSONEq(t, "{\"message\":\"Invalid access token\", \"messageId\":\"publicdashboards.invalidAccessToken\", \"statusCode\":400, \"traceID\":\"\"}", response.Body.String())
|
require.JSONEq(t, "{\"message\":\"Invalid access token\", \"messageId\":\"publicdashboards.invalidAccessToken\", \"statusCode\":400, \"traceID\":\"\"}", response.Body.String())
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Code generated by mockery v2.12.1. DO NOT EDIT.
|
// Code generated by mockery v2.14.0. DO NOT EDIT.
|
||||||
|
|
||||||
package publicdashboards
|
package publicdashboards
|
||||||
|
|
||||||
@@ -15,8 +15,6 @@ import (
|
|||||||
|
|
||||||
pkgmodels "github.com/grafana/grafana/pkg/models"
|
pkgmodels "github.com/grafana/grafana/pkg/models"
|
||||||
|
|
||||||
testing "testing"
|
|
||||||
|
|
||||||
user "github.com/grafana/grafana/pkg/services/user"
|
user "github.com/grafana/grafana/pkg/services/user"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -150,6 +148,29 @@ func (_m *FakePublicDashboardService) FindAnnotations(ctx context.Context, reqDT
|
|||||||
return r0, r1
|
return r0, r1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindByAccessToken provides a mock function with given fields: ctx, accessToken
|
||||||
|
func (_m *FakePublicDashboardService) FindByAccessToken(ctx context.Context, accessToken string) (*models.PublicDashboard, error) {
|
||||||
|
ret := _m.Called(ctx, accessToken)
|
||||||
|
|
||||||
|
var r0 *models.PublicDashboard
|
||||||
|
if rf, ok := ret.Get(0).(func(context.Context, string) *models.PublicDashboard); ok {
|
||||||
|
r0 = rf(ctx, accessToken)
|
||||||
|
} else {
|
||||||
|
if ret.Get(0) != nil {
|
||||||
|
r0 = ret.Get(0).(*models.PublicDashboard)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var r1 error
|
||||||
|
if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
|
||||||
|
r1 = rf(ctx, accessToken)
|
||||||
|
} else {
|
||||||
|
r1 = ret.Error(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return r0, r1
|
||||||
|
}
|
||||||
|
|
||||||
// FindByDashboardUid provides a mock function with given fields: ctx, orgId, dashboardUid
|
// FindByDashboardUid provides a mock function with given fields: ctx, orgId, dashboardUid
|
||||||
func (_m *FakePublicDashboardService) FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*models.PublicDashboard, error) {
|
func (_m *FakePublicDashboardService) FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*models.PublicDashboard, error) {
|
||||||
ret := _m.Called(ctx, orgId, dashboardUid)
|
ret := _m.Called(ctx, orgId, dashboardUid)
|
||||||
@@ -358,8 +379,13 @@ func (_m *FakePublicDashboardService) Update(ctx context.Context, u *user.Signed
|
|||||||
return r0, r1
|
return r0, r1
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewFakePublicDashboardService creates a new instance of FakePublicDashboardService. It also registers the testing.TB interface on the mock and a cleanup function to assert the mocks expectations.
|
type mockConstructorTestingTNewFakePublicDashboardService interface {
|
||||||
func NewFakePublicDashboardService(t testing.TB) *FakePublicDashboardService {
|
mock.TestingT
|
||||||
|
Cleanup(func())
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFakePublicDashboardService creates a new instance of FakePublicDashboardService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
||||||
|
func NewFakePublicDashboardService(t mockConstructorTestingTNewFakePublicDashboardService) *FakePublicDashboardService {
|
||||||
mock := &FakePublicDashboardService{}
|
mock := &FakePublicDashboardService{}
|
||||||
mock.Mock.Test(t)
|
mock.Mock.Test(t)
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import (
|
|||||||
//go:generate mockery --name Service --structname FakePublicDashboardService --inpackage --filename public_dashboard_service_mock.go
|
//go:generate mockery --name Service --structname FakePublicDashboardService --inpackage --filename public_dashboard_service_mock.go
|
||||||
type Service interface {
|
type Service interface {
|
||||||
FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, *models.Dashboard, error)
|
FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, *models.Dashboard, error)
|
||||||
|
FindByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, error)
|
||||||
FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*PublicDashboard, error)
|
FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*PublicDashboard, error)
|
||||||
FindAnnotations(ctx context.Context, reqDTO AnnotationsQueryDTO, accessToken string) ([]AnnotationEvent, error)
|
FindAnnotations(ctx context.Context, reqDTO AnnotationsQueryDTO, accessToken string) ([]AnnotationEvent, error)
|
||||||
FindDashboard(ctx context.Context, orgId int64, dashboardUid string) (*models.Dashboard, error)
|
FindDashboard(ctx context.Context, orgId int64, dashboardUid string) (*models.Dashboard, error)
|
||||||
|
|||||||
@@ -75,15 +75,25 @@ func (pd *PublicDashboardServiceImpl) FindDashboard(ctx context.Context, orgId i
|
|||||||
return dash, nil
|
return dash, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindPublicDashboardAndDashboardByAccessToken Gets public dashboard and a dashboard by access token
|
// FindByAccessToken Gets public dashboard by access token
|
||||||
func (pd *PublicDashboardServiceImpl) FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, *models.Dashboard, error) {
|
func (pd *PublicDashboardServiceImpl) FindByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, error) {
|
||||||
pubdash, err := pd.store.FindByAccessToken(ctx, accessToken)
|
pubdash, err := pd.store.FindByAccessToken(ctx, accessToken)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, ErrInternalServerError.Errorf("FindPublicDashboardAndDashboardByAccessToken: failed to find a public dashboard: %w", err)
|
return nil, ErrInternalServerError.Errorf("FindByAccessToken: failed to find a public dashboard: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if pubdash == nil {
|
if pubdash == nil {
|
||||||
return nil, nil, ErrPublicDashboardNotFound.Errorf("FindPublicDashboardAndDashboardByAccessToken: Public dashboard not found accessToken: %s", accessToken)
|
return nil, ErrPublicDashboardNotFound.Errorf("FindByAccessToken: Public dashboard not found accessToken: %s", accessToken)
|
||||||
|
}
|
||||||
|
|
||||||
|
return pubdash, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindPublicDashboardAndDashboardByAccessToken Gets public dashboard and a dashboard by access token
|
||||||
|
func (pd *PublicDashboardServiceImpl) FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, *models.Dashboard, error) {
|
||||||
|
pubdash, err := pd.FindByAccessToken(ctx, accessToken)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if !pubdash.IsEnabled {
|
if !pubdash.IsEnabled {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ export function emitDashboardViewEvent(dashboard: DashboardModel) {
|
|||||||
dashboardUid: dashboard.uid,
|
dashboardUid: dashboard.uid,
|
||||||
folderName: dashboard.meta.folderTitle,
|
folderName: dashboard.meta.folderTitle,
|
||||||
eventName: MetaAnalyticsEventName.DashboardView,
|
eventName: MetaAnalyticsEventName.DashboardView,
|
||||||
publicDashboardUid: dashboard.meta.publicDashboardUid,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
reportMetaAnalytics(eventData);
|
reportMetaAnalytics(eventData);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { PanelData, LoadingState, DataSourceApi, CoreApp, urlUtil } from '@grafana/data';
|
import { PanelData, LoadingState, DataSourceApi, CoreApp, urlUtil } from '@grafana/data';
|
||||||
import { reportMetaAnalytics, MetaAnalyticsEventName, DataRequestEventPayload } from '@grafana/runtime';
|
import { reportMetaAnalytics, MetaAnalyticsEventName, DataRequestEventPayload } from '@grafana/runtime';
|
||||||
import { getConfig } from 'app/core/config';
|
|
||||||
|
|
||||||
import { getDashboardSrv } from '../../dashboard/services/DashboardSrv';
|
import { getDashboardSrv } from '../../dashboard/services/DashboardSrv';
|
||||||
|
|
||||||
@@ -77,10 +76,6 @@ export function emitDataRequestEvent(datasource: DataSourceApi) {
|
|||||||
eventData.dashboardName = dashboard.title;
|
eventData.dashboardName = dashboard.title;
|
||||||
eventData.dashboardUid = dashboard.uid;
|
eventData.dashboardUid = dashboard.uid;
|
||||||
eventData.folderName = dashboard.meta.folderTitle;
|
eventData.folderName = dashboard.meta.folderTitle;
|
||||||
|
|
||||||
if (getConfig().isPublicDashboardView) {
|
|
||||||
eventData.publicDashboardUid = dashboard.meta.publicDashboardUid;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.error) {
|
if (data.error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user