Skip to content

Commit

Permalink
Move usage stats rbac action and role registration to access control …
Browse files Browse the repository at this point in the history
…package
  • Loading branch information
kalleep committed Apr 4, 2024
1 parent d8514c0 commit 66ce6a4
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 43 deletions.
30 changes: 0 additions & 30 deletions pkg/infra/usagestats/service/accesscontrol.go

This file was deleted.

2 changes: 1 addition & 1 deletion pkg/infra/usagestats/service/api.go
Expand Up @@ -15,7 +15,7 @@ func (uss *UsageStats) registerAPIEndpoints() {
authorize := accesscontrol.Middleware(uss.accesscontrol)

uss.RouteRegister.Group(rootUrl, func(subrouter routing.RouteRegister) {
subrouter.Get("/usage-report-preview", authorize(accesscontrol.EvalPermission(ActionRead)), routing.Wrap(uss.getUsageReportPreview))
subrouter.Get("/usage-report-preview", authorize(accesscontrol.EvalPermission(accesscontrol.ActionUsageStatsRead)), routing.Wrap(uss.getUsageReportPreview))
})
}

Expand Down
5 changes: 3 additions & 2 deletions pkg/infra/usagestats/service/api_test.go
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/grafana/grafana/pkg/infra/db/dbtest"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/services/accesscontrol"
"github.com/grafana/grafana/pkg/services/contexthandler/ctxkey"
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
"github.com/grafana/grafana/pkg/services/stats"
Expand All @@ -28,13 +29,13 @@ func TestApi_getUsageStats(t *testing.T) {
{
desc: "expect usage stats",
enabled: true,
permissions: map[string][]string{ActionRead: {}},
permissions: map[string][]string{accesscontrol.ActionUsageStatsRead: {}},
expectedStatus: 200,
},
{
desc: "expect usage stat preview still there after disabling",
enabled: false,
permissions: map[string][]string{ActionRead: {}},
permissions: map[string][]string{accesscontrol.ActionUsageStatsRead: {}},
expectedStatus: 200,
},
{
Expand Down
5 changes: 0 additions & 5 deletions pkg/infra/usagestats/service/service.go
Expand Up @@ -35,7 +35,6 @@ func ProvideService(cfg *setting.Cfg,
routeRegister routing.RouteRegister,
tracer tracing.Tracer,
accesscontrol ac.AccessControl,
accesscontrolService ac.Service,
bundleRegistry supportbundles.Service,
) (*UsageStats, error) {
s := &UsageStats{
Expand All @@ -47,10 +46,6 @@ func ProvideService(cfg *setting.Cfg,
accesscontrol: accesscontrol,
}

if err := declareFixedRoles(accesscontrolService); err != nil {
return nil, err
}

s.registerAPIEndpoints()
bundleRegistry.RegisterSupportItemCollector(s.supportBundleCollector())

Expand Down
2 changes: 0 additions & 2 deletions pkg/infra/usagestats/service/usage_stats_test.go
Expand Up @@ -23,7 +23,6 @@ import (
"github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/infra/usagestats"
"github.com/grafana/grafana/pkg/services/accesscontrol/acimpl"
"github.com/grafana/grafana/pkg/services/accesscontrol/actest"
"github.com/grafana/grafana/pkg/services/supportbundles/supportbundlestest"
"github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tests/testsuite"
Expand Down Expand Up @@ -248,7 +247,6 @@ func createService(t *testing.T, sqlStore db.DB, withDB bool) *UsageStats {
routing.NewRouteRegister(),
tracing.InitializeTracerForTest(),
acimpl.ProvideAccessControl(cfg),
actest.FakeService{},
supportbundlestest.NewFakeBundleService(),
)

Expand Down
3 changes: 3 additions & 0 deletions pkg/services/accesscontrol/models.go
Expand Up @@ -481,6 +481,9 @@ const (
ActionLibraryPanelsRead = "library.panels:read"
ActionLibraryPanelsWrite = "library.panels:write"
ActionLibraryPanelsDelete = "library.panels:delete"

// Usage stats actions
ActionUsageStatsRead = "server.usagestats.report:read"
)

var (
Expand Down
23 changes: 20 additions & 3 deletions pkg/services/accesscontrol/roles.go
Expand Up @@ -280,6 +280,16 @@ var (
},
},
}

usagestatsReaderRole = RoleDTO{
Name: "fixed:usagestats:reader",
DisplayName: "Usage stats report reader",
Description: "View usage statistics report",
Group: "Statistics",
Permissions: []Permission{
{Action: ActionUsageStatsRead},
},
}
)

// Declare OSS roles to the accesscontrol service
Expand Down Expand Up @@ -320,15 +330,22 @@ func DeclareFixedRoles(service Service, cfg *setting.Cfg) error {
Role: generalAuthConfigWriterRole,
Grants: []string{RoleGrafanaAdmin},
}

// TODO: Move to own service when implemented
authenticationConfigWriter := RoleRegistration{
Role: authenticationConfigWriterRole,
Grants: []string{RoleGrafanaAdmin},
}

return service.DeclareFixedRoles(ldapReader, ldapWriter, orgUsersReader, orgUsersWriter,
settingsReader, statsReader, usersReader, usersWriter, authenticationConfigWriter, generalAuthConfigWriter)
usageStatsReader := RoleRegistration{
Role: usagestatsReaderRole,
Grants: []string{RoleGrafanaAdmin},
}

return service.DeclareFixedRoles(
ldapReader, ldapWriter, orgUsersReader, orgUsersWriter,
settingsReader, statsReader, usersReader, usersWriter,
authenticationConfigWriter, generalAuthConfigWriter, usageStatsReader,
)
}

func ConcatPermissions(permissions ...[]Permission) []Permission {
Expand Down

0 comments on commit 66ce6a4

Please sign in to comment.