RBAC: Add scope resolvers for dashboards (#50110)

* Inject access control into dashboard service

* Add function to parse id scopes

* Add dashboard as return value

* Update mock

* Return only err to keep service interface

* Add scope resolvers for dashboard id scopes

* Add function to parse uid scopes

* Add dashboard uid scope resolver

* Register scope resolvers for dashboards

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
This commit is contained in:
Karl Persson
2022-06-07 11:02:20 +02:00
committed by GitHub
co-authored by Gabriel MABILLE
parent 9f6afb3475
commit c4a75f9eb3
19 changed files with 298 additions and 97 deletions
+4 -2
View File
@@ -832,8 +832,8 @@ func (d *DashboardStore) deleteAlertDefinition(dashboardId int64, sess *sqlstore
return nil
}
func (d *DashboardStore) GetDashboard(ctx context.Context, query *models.GetDashboardQuery) error {
return d.sqlStore.WithDbSession(ctx, func(sess *sqlstore.DBSession) error {
func (d *DashboardStore) GetDashboard(ctx context.Context, query *models.GetDashboardQuery) (*models.Dashboard, error) {
err := d.sqlStore.WithDbSession(ctx, func(sess *sqlstore.DBSession) error {
if query.Id == 0 && len(query.Slug) == 0 && len(query.Uid) == 0 {
return models.ErrDashboardIdentifierNotSet
}
@@ -852,6 +852,8 @@ func (d *DashboardStore) GetDashboard(ctx context.Context, query *models.GetDash
query.Result = &dashboard
return nil
})
return query.Result, err
}
func (d *DashboardStore) GetDashboardUIDById(ctx context.Context, query *models.GetDashboardRefByIdQuery) error {
@@ -62,7 +62,7 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
OrgId: 1,
}
err := dashboardStore.GetDashboard(context.Background(), &query)
_, err := dashboardStore.GetDashboard(context.Background(), &query)
require.NoError(t, err)
require.Equal(t, query.Result.Title, "test dash 23")
@@ -79,7 +79,7 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
OrgId: 1,
}
err := dashboardStore.GetDashboard(context.Background(), &query)
_, err := dashboardStore.GetDashboard(context.Background(), &query)
require.NoError(t, err)
require.Equal(t, query.Result.Title, "test dash 23")
@@ -96,7 +96,7 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
OrgId: 1,
}
err := dashboardStore.GetDashboard(context.Background(), &query)
_, err := dashboardStore.GetDashboard(context.Background(), &query)
require.NoError(t, err)
require.Equal(t, query.Result.Title, "test dash 23")
@@ -120,7 +120,7 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
OrgId: 1,
}
err := dashboardStore.GetDashboard(context.Background(), &query)
_, err := dashboardStore.GetDashboard(context.Background(), &query)
require.Equal(t, err, models.ErrDashboardIdentifierNotSet)
})
@@ -202,7 +202,7 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
OrgId: 1,
}
err = dashboardStore.GetDashboard(context.Background(), &query)
_, err = dashboardStore.GetDashboard(context.Background(), &query)
require.NoError(t, err)
require.Equal(t, query.Result.FolderId, int64(0))
require.Equal(t, query.Result.CreatedBy, savedDash.CreatedBy)