mirror of
https://github.com/grafana/grafana.git
synced 2024-12-01 21:19:28 -06:00
1b8e9b51b2
* Make identity.Requester available at Context * Clean pkg/services/guardian/guardian.go * Clean guardian provider and guardian AC * Clean pkg/api/team.go * Clean ctxhandler, datasources, plugin and live * Clean dashboards and guardian * Implement NewUserDisplayDTOFromRequester * Change status code numbers for http constants * Upgrade signature of ngalert services * log parsing errors instead of throwing error
44 lines
1.7 KiB
Go
44 lines
1.7 KiB
Go
package guardian
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
|
"github.com/grafana/grafana/pkg/services/auth/identity"
|
|
"github.com/grafana/grafana/pkg/services/dashboards"
|
|
"github.com/grafana/grafana/pkg/services/folder"
|
|
"github.com/grafana/grafana/pkg/services/team"
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
)
|
|
|
|
type Provider struct{}
|
|
|
|
func ProvideService(
|
|
cfg *setting.Cfg, ac accesscontrol.AccessControl,
|
|
dashboardService dashboards.DashboardService, teamService team.Service,
|
|
) *Provider {
|
|
// TODO: Fix this hack, see https://github.com/grafana/grafana-enterprise/issues/2935
|
|
InitAccessControlGuardian(cfg, ac, dashboardService)
|
|
return &Provider{}
|
|
}
|
|
|
|
func InitAccessControlGuardian(
|
|
cfg *setting.Cfg, ac accesscontrol.AccessControl, dashboardService dashboards.DashboardService,
|
|
) {
|
|
New = func(ctx context.Context, dashId int64, orgId int64, user identity.Requester) (DashboardGuardian, error) {
|
|
return NewAccessControlDashboardGuardian(ctx, cfg, dashId, user, ac, dashboardService)
|
|
}
|
|
|
|
NewByUID = func(ctx context.Context, dashUID string, orgId int64, user identity.Requester) (DashboardGuardian, error) {
|
|
return NewAccessControlDashboardGuardianByUID(ctx, cfg, dashUID, user, ac, dashboardService)
|
|
}
|
|
|
|
NewByDashboard = func(ctx context.Context, dash *dashboards.Dashboard, orgId int64, user identity.Requester) (DashboardGuardian, error) {
|
|
return NewAccessControlDashboardGuardianByDashboard(ctx, cfg, dash, user, ac, dashboardService)
|
|
}
|
|
|
|
NewByFolder = func(ctx context.Context, f *folder.Folder, orgId int64, user identity.Requester) (DashboardGuardian, error) {
|
|
return NewAccessControlFolderGuardian(ctx, cfg, f, user, ac, dashboardService)
|
|
}
|
|
}
|