From ff35e35ce09fdc60c95d3216f989cf89919a4101 Mon Sep 17 00:00:00 2001 From: Karl Persson Date: Mon, 5 Sep 2022 18:15:47 +0200 Subject: [PATCH] RBAC: Move service and evaluator to acimpl package (#54714) * RBAC: Move access control evaluator to acimpl package * RBAC: Move service to acimpl package --- pkg/api/common_test.go | 5 +++-- pkg/cmd/grafana-cli/runner/wire.go | 5 +++-- pkg/cmd/grafana-cli/runner/wireexts_oss.go | 7 ++++--- pkg/server/server_test.go | 4 ++-- pkg/server/wire.go | 6 ++++-- pkg/server/wireexts_oss.go | 7 ++++--- .../{ossaccesscontrol => acimpl}/accesscontrol.go | 2 +- .../{ossaccesscontrol => acimpl}/accesscontrol_test.go | 2 +- .../accesscontrol/{ossaccesscontrol => acimpl}/service.go | 5 +++-- .../{ossaccesscontrol => acimpl}/service_test.go | 2 +- pkg/services/publicdashboards/api/common_test.go | 6 +++--- 11 files changed, 29 insertions(+), 22 deletions(-) rename pkg/services/accesscontrol/{ossaccesscontrol => acimpl}/accesscontrol.go (98%) rename pkg/services/accesscontrol/{ossaccesscontrol => acimpl}/accesscontrol_test.go (98%) rename pkg/services/accesscontrol/{ossaccesscontrol => acimpl}/service.go (94%) rename pkg/services/accesscontrol/{ossaccesscontrol => acimpl}/service_test.go (99%) diff --git a/pkg/api/common_test.go b/pkg/api/common_test.go index 2a0e5673eb8..ca5f7d88e0e 100644 --- a/pkg/api/common_test.go +++ b/pkg/api/common_test.go @@ -22,6 +22,7 @@ import ( "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/accesscontrol" + "github.com/grafana/grafana/pkg/services/accesscontrol/acimpl" "github.com/grafana/grafana/pkg/services/accesscontrol/database" accesscontrolmock "github.com/grafana/grafana/pkg/services/accesscontrol/mock" "github.com/grafana/grafana/pkg/services/accesscontrol/ossaccesscontrol" @@ -378,9 +379,9 @@ func setupHTTPServerWithCfgDb( acService = acmock } else { var err error - acService, err = ossaccesscontrol.ProvideService(cfg, database.ProvideService(db), routeRegister) + acService, err = acimpl.ProvideService(cfg, database.ProvideService(db), routeRegister) require.NoError(t, err) - ac = ossaccesscontrol.ProvideAccessControl(cfg, acService) + ac = acimpl.ProvideAccessControl(cfg, acService) } teamPermissionService, err := ossaccesscontrol.ProvideTeamPermissions(cfg, routeRegister, db, ac, license, acService) diff --git a/pkg/cmd/grafana-cli/runner/wire.go b/pkg/cmd/grafana-cli/runner/wire.go index 4014abdee55..ca69b546132 100644 --- a/pkg/cmd/grafana-cli/runner/wire.go +++ b/pkg/cmd/grafana-cli/runner/wire.go @@ -43,6 +43,7 @@ import ( "github.com/grafana/grafana/pkg/plugins/plugincontext" "github.com/grafana/grafana/pkg/plugins/repo" "github.com/grafana/grafana/pkg/services/accesscontrol" + "github.com/grafana/grafana/pkg/services/accesscontrol/acimpl" "github.com/grafana/grafana/pkg/services/accesscontrol/ossaccesscontrol" "github.com/grafana/grafana/pkg/services/alerting" "github.com/grafana/grafana/pkg/services/auth" @@ -334,8 +335,8 @@ var wireSet = wire.NewSet( wire.Bind(new(db.DB), new(*sqlstore.SQLStore)), prefimpl.ProvideService, opentsdb.ProvideService, - ossaccesscontrol.ProvideAccessControl, - wire.Bind(new(accesscontrol.AccessControl), new(*ossaccesscontrol.AccessControl)), + acimpl.ProvideAccessControl, + wire.Bind(new(accesscontrol.AccessControl), new(*acimpl.AccessControl)), ) func Initialize(cfg *setting.Cfg) (Runner, error) { diff --git a/pkg/cmd/grafana-cli/runner/wireexts_oss.go b/pkg/cmd/grafana-cli/runner/wireexts_oss.go index b446c963324..18fe5fb3798 100644 --- a/pkg/cmd/grafana-cli/runner/wireexts_oss.go +++ b/pkg/cmd/grafana-cli/runner/wireexts_oss.go @@ -14,6 +14,7 @@ import ( "github.com/grafana/grafana/pkg/server/backgroundsvcs" "github.com/grafana/grafana/pkg/server/usagestatssvcs" "github.com/grafana/grafana/pkg/services/accesscontrol" + "github.com/grafana/grafana/pkg/services/accesscontrol/acimpl" acdb "github.com/grafana/grafana/pkg/services/accesscontrol/database" "github.com/grafana/grafana/pkg/services/accesscontrol/ossaccesscontrol" "github.com/grafana/grafana/pkg/services/auth" @@ -51,9 +52,9 @@ var wireExtsSet = wire.NewSet( auth.ProvideUserAuthTokenService, wire.Bind(new(models.UserTokenService), new(*auth.UserAuthTokenService)), wire.Bind(new(models.UserTokenBackgroundService), new(*auth.UserAuthTokenService)), - ossaccesscontrol.ProvideService, - wire.Bind(new(accesscontrol.Service), new(*ossaccesscontrol.Service)), - wire.Bind(new(accesscontrol.RoleRegistry), new(*ossaccesscontrol.Service)), + acimpl.ProvideService, + wire.Bind(new(accesscontrol.Service), new(*acimpl.Service)), + wire.Bind(new(accesscontrol.RoleRegistry), new(*acimpl.Service)), thumbs.ProvideCrawlerAuthSetupService, wire.Bind(new(thumbs.CrawlerAuthSetupService), new(*thumbs.OSSCrawlerAuthSetupService)), validations.ProvideValidator, diff --git a/pkg/server/server_test.go b/pkg/server/server_test.go index 5a2c061c9b9..e1a13d9053d 100644 --- a/pkg/server/server_test.go +++ b/pkg/server/server_test.go @@ -10,7 +10,7 @@ import ( "github.com/grafana/grafana/pkg/infra/serverlock" "github.com/grafana/grafana/pkg/registry" "github.com/grafana/grafana/pkg/server/backgroundsvcs" - "github.com/grafana/grafana/pkg/services/accesscontrol/ossaccesscontrol" + "github.com/grafana/grafana/pkg/services/accesscontrol/acimpl" "github.com/grafana/grafana/pkg/services/secrets/kvstore/migrations" "github.com/grafana/grafana/pkg/services/sqlstore" "github.com/grafana/grafana/pkg/services/user/usertest" @@ -55,7 +55,7 @@ func testServer(t *testing.T, services ...registry.BackgroundService) *Server { secretMigrationService := &migrations.SecretMigrationServiceImpl{ ServerLockService: serverLockService, } - s, err := newServer(Options{}, setting.NewCfg(), nil, &ossaccesscontrol.Service{}, nil, backgroundsvcs.NewBackgroundServiceRegistry(services...), secretMigrationService, usertest.NewUserServiceFake(), nil) + s, err := newServer(Options{}, setting.NewCfg(), nil, &acimpl.Service{}, nil, backgroundsvcs.NewBackgroundServiceRegistry(services...), secretMigrationService, usertest.NewUserServiceFake(), nil) require.NoError(t, err) // Required to skip configuration initialization that causes // DI errors in this test. diff --git a/pkg/server/wire.go b/pkg/server/wire.go index a3457e964c4..f34d9a8a8b4 100644 --- a/pkg/server/wire.go +++ b/pkg/server/wire.go @@ -6,6 +6,7 @@ package server import ( "github.com/google/wire" sdkhttpclient "github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" + "github.com/grafana/grafana/pkg/services/auth" "github.com/grafana/grafana/pkg/services/playlist/playlistimpl" "github.com/grafana/grafana/pkg/services/store/sanitizer" @@ -44,6 +45,7 @@ import ( "github.com/grafana/grafana/pkg/plugins/plugincontext" "github.com/grafana/grafana/pkg/plugins/repo" "github.com/grafana/grafana/pkg/services/accesscontrol" + "github.com/grafana/grafana/pkg/services/accesscontrol/acimpl" "github.com/grafana/grafana/pkg/services/accesscontrol/ossaccesscontrol" "github.com/grafana/grafana/pkg/services/alerting" "github.com/grafana/grafana/pkg/services/apikey/apikeyimpl" @@ -335,8 +337,8 @@ var wireBasicSet = wire.NewSet( secretsMigrations.ProvideSecretMigrationService, wire.Bind(new(secretsMigrations.SecretMigrationService), new(*secretsMigrations.SecretMigrationServiceImpl)), userauthimpl.ProvideService, - ossaccesscontrol.ProvideAccessControl, - wire.Bind(new(accesscontrol.AccessControl), new(*ossaccesscontrol.AccessControl)), + acimpl.ProvideAccessControl, + wire.Bind(new(accesscontrol.AccessControl), new(*acimpl.AccessControl)), ) var wireSet = wire.NewSet( diff --git a/pkg/server/wireexts_oss.go b/pkg/server/wireexts_oss.go index 697b918c2f5..4957b43d9d3 100644 --- a/pkg/server/wireexts_oss.go +++ b/pkg/server/wireexts_oss.go @@ -14,6 +14,7 @@ import ( "github.com/grafana/grafana/pkg/server/backgroundsvcs" "github.com/grafana/grafana/pkg/server/usagestatssvcs" "github.com/grafana/grafana/pkg/services/accesscontrol" + "github.com/grafana/grafana/pkg/services/accesscontrol/acimpl" acdb "github.com/grafana/grafana/pkg/services/accesscontrol/database" "github.com/grafana/grafana/pkg/services/accesscontrol/ossaccesscontrol" "github.com/grafana/grafana/pkg/services/auth" @@ -46,9 +47,9 @@ var wireExtsBasicSet = wire.NewSet( wire.Bind(new(models.Licensing), new(*licensing.OSSLicensingService)), setting.ProvideProvider, wire.Bind(new(setting.Provider), new(*setting.OSSImpl)), - ossaccesscontrol.ProvideService, - wire.Bind(new(accesscontrol.RoleRegistry), new(*ossaccesscontrol.Service)), - wire.Bind(new(accesscontrol.Service), new(*ossaccesscontrol.Service)), + acimpl.ProvideService, + wire.Bind(new(accesscontrol.RoleRegistry), new(*acimpl.Service)), + wire.Bind(new(accesscontrol.Service), new(*acimpl.Service)), thumbs.ProvideCrawlerAuthSetupService, wire.Bind(new(thumbs.CrawlerAuthSetupService), new(*thumbs.OSSCrawlerAuthSetupService)), validations.ProvideValidator, diff --git a/pkg/services/accesscontrol/ossaccesscontrol/accesscontrol.go b/pkg/services/accesscontrol/acimpl/accesscontrol.go similarity index 98% rename from pkg/services/accesscontrol/ossaccesscontrol/accesscontrol.go rename to pkg/services/accesscontrol/acimpl/accesscontrol.go index 79bc7575592..3f3c8c04b9b 100644 --- a/pkg/services/accesscontrol/ossaccesscontrol/accesscontrol.go +++ b/pkg/services/accesscontrol/acimpl/accesscontrol.go @@ -1,4 +1,4 @@ -package ossaccesscontrol +package acimpl import ( "context" diff --git a/pkg/services/accesscontrol/ossaccesscontrol/accesscontrol_test.go b/pkg/services/accesscontrol/acimpl/accesscontrol_test.go similarity index 98% rename from pkg/services/accesscontrol/ossaccesscontrol/accesscontrol_test.go rename to pkg/services/accesscontrol/acimpl/accesscontrol_test.go index c388ecd516c..c2bbcbc2b64 100644 --- a/pkg/services/accesscontrol/ossaccesscontrol/accesscontrol_test.go +++ b/pkg/services/accesscontrol/acimpl/accesscontrol_test.go @@ -1,4 +1,4 @@ -package ossaccesscontrol +package acimpl import ( "context" diff --git a/pkg/services/accesscontrol/ossaccesscontrol/service.go b/pkg/services/accesscontrol/acimpl/service.go similarity index 94% rename from pkg/services/accesscontrol/ossaccesscontrol/service.go rename to pkg/services/accesscontrol/acimpl/service.go index 2250dd70f2c..dcfeb604214 100644 --- a/pkg/services/accesscontrol/ossaccesscontrol/service.go +++ b/pkg/services/accesscontrol/acimpl/service.go @@ -1,4 +1,4 @@ -package ossaccesscontrol +package acimpl import ( "context" @@ -8,6 +8,7 @@ import ( "github.com/grafana/grafana/pkg/infra/metrics" "github.com/grafana/grafana/pkg/services/accesscontrol" "github.com/grafana/grafana/pkg/services/accesscontrol/api" + "github.com/grafana/grafana/pkg/services/accesscontrol/ossaccesscontrol" "github.com/grafana/grafana/pkg/services/user" "github.com/grafana/grafana/pkg/setting" "github.com/prometheus/client_golang/prometheus" @@ -58,7 +59,7 @@ func (s *Service) GetUsageStats(_ context.Context) map[string]interface{} { } var actionsToFetch = append( - TeamAdminActions, append(DashboardAdminActions, FolderAdminActions...)..., + ossaccesscontrol.TeamAdminActions, append(ossaccesscontrol.DashboardAdminActions, ossaccesscontrol.FolderAdminActions...)..., ) // GetUserPermissions returns user permissions based on built-in roles diff --git a/pkg/services/accesscontrol/ossaccesscontrol/service_test.go b/pkg/services/accesscontrol/acimpl/service_test.go similarity index 99% rename from pkg/services/accesscontrol/ossaccesscontrol/service_test.go rename to pkg/services/accesscontrol/acimpl/service_test.go index 3aac4e57489..9d948467b37 100644 --- a/pkg/services/accesscontrol/ossaccesscontrol/service_test.go +++ b/pkg/services/accesscontrol/acimpl/service_test.go @@ -1,4 +1,4 @@ -package ossaccesscontrol +package acimpl import ( "context" diff --git a/pkg/services/publicdashboards/api/common_test.go b/pkg/services/publicdashboards/api/common_test.go index aa28c4b5cb6..6fe51bf0893 100644 --- a/pkg/services/publicdashboards/api/common_test.go +++ b/pkg/services/publicdashboards/api/common_test.go @@ -16,8 +16,8 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/plugins" + "github.com/grafana/grafana/pkg/services/accesscontrol/acimpl" "github.com/grafana/grafana/pkg/services/accesscontrol/database" - "github.com/grafana/grafana/pkg/services/accesscontrol/ossaccesscontrol" "github.com/grafana/grafana/pkg/services/contexthandler/ctxkey" "github.com/grafana/grafana/pkg/services/datasources" "github.com/grafana/grafana/pkg/services/featuremgmt" @@ -55,9 +55,9 @@ func setupTestServer( } var err error - acService, err := ossaccesscontrol.ProvideService(cfg, database.ProvideService(db), rr) + acService, err := acimpl.ProvideService(cfg, database.ProvideService(db), rr) require.NoError(t, err) - ac := ossaccesscontrol.ProvideAccessControl(cfg, acService) + ac := acimpl.ProvideAccessControl(cfg, acService) // build mux m := web.New()