mirror of https://github.com/grafana/grafana
Alerting: Receiver resource permissions service (#93552)
parent
7398fe3fcb
commit
1ede1e32b8
@ -0,0 +1,60 @@ |
|||||||
|
package ossaccesscontrol |
||||||
|
|
||||||
|
import ( |
||||||
|
"github.com/grafana/grafana/pkg/api/routing" |
||||||
|
"github.com/grafana/grafana/pkg/infra/db" |
||||||
|
"github.com/grafana/grafana/pkg/services/accesscontrol" |
||||||
|
"github.com/grafana/grafana/pkg/services/accesscontrol/resourcepermissions" |
||||||
|
"github.com/grafana/grafana/pkg/services/featuremgmt" |
||||||
|
"github.com/grafana/grafana/pkg/services/licensing" |
||||||
|
"github.com/grafana/grafana/pkg/services/ngalert" |
||||||
|
alertingac "github.com/grafana/grafana/pkg/services/ngalert/accesscontrol" |
||||||
|
"github.com/grafana/grafana/pkg/services/team" |
||||||
|
"github.com/grafana/grafana/pkg/services/user" |
||||||
|
"github.com/grafana/grafana/pkg/setting" |
||||||
|
) |
||||||
|
|
||||||
|
var ReceiversViewActions = []string{accesscontrol.ActionAlertingReceiversRead} |
||||||
|
var ReceiversEditActions = append(ReceiversViewActions, []string{accesscontrol.ActionAlertingReceiversUpdate, accesscontrol.ActionAlertingReceiversDelete}...) |
||||||
|
var ReceiversAdminActions = append(ReceiversEditActions, []string{accesscontrol.ActionAlertingReceiversReadSecrets, accesscontrol.ActionAlertingReceiversPermissionsRead, accesscontrol.ActionAlertingReceiversPermissionsWrite}...) |
||||||
|
|
||||||
|
func ProvideReceiverPermissionsService( |
||||||
|
cfg *setting.Cfg, features featuremgmt.FeatureToggles, router routing.RouteRegister, sql db.DB, ac accesscontrol.AccessControl, |
||||||
|
license licensing.Licensing, service accesscontrol.Service, |
||||||
|
teamService team.Service, userService user.Service, actionSetService resourcepermissions.ActionSetService, |
||||||
|
) (*ReceiverPermissionsService, error) { |
||||||
|
if !features.IsEnabledGlobally(featuremgmt.FlagAlertingApiServer) { |
||||||
|
return nil, nil |
||||||
|
} |
||||||
|
|
||||||
|
options := resourcepermissions.Options{ |
||||||
|
Resource: "receivers", |
||||||
|
ResourceAttribute: "uid", |
||||||
|
Assignments: resourcepermissions.Assignments{ |
||||||
|
Users: true, |
||||||
|
Teams: true, |
||||||
|
BuiltInRoles: true, |
||||||
|
ServiceAccounts: true, |
||||||
|
}, |
||||||
|
PermissionsToActions: map[string][]string{ |
||||||
|
string(alertingac.ReceiverPermissionView): append([]string{}, ReceiversViewActions...), |
||||||
|
string(alertingac.ReceiverPermissionEdit): append([]string{}, ReceiversEditActions...), |
||||||
|
string(alertingac.ReceiverPermissionAdmin): append([]string{}, ReceiversAdminActions...), |
||||||
|
}, |
||||||
|
ReaderRoleName: "Alerting receiver permission reader", |
||||||
|
WriterRoleName: "Alerting receiver permission writer", |
||||||
|
RoleGroup: ngalert.AlertRolesGroup, |
||||||
|
} |
||||||
|
|
||||||
|
srv, err := resourcepermissions.New(cfg, options, features, router, license, ac, service, sql, teamService, userService, actionSetService) |
||||||
|
if err != nil { |
||||||
|
return nil, err |
||||||
|
} |
||||||
|
return &ReceiverPermissionsService{Service: srv}, nil |
||||||
|
} |
||||||
|
|
||||||
|
var _ accesscontrol.ReceiverPermissionsService = new(ReceiverPermissionsService) |
||||||
|
|
||||||
|
type ReceiverPermissionsService struct { |
||||||
|
*resourcepermissions.Service |
||||||
|
} |
||||||
Loading…
Reference in new issue