mirror of
https://github.com/grafana/grafana.git
synced 2026-08-16 16:14:59 -05:00
AccessControl: Refine interface for AC store (#44536)
* AccessControl: Refine interface for AC store * Update pkg/services/accesscontrol/database/resource_permissions.go
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
||||
"github.com/grafana/grafana/pkg/services/accesscontrol/resourcepermissions/types"
|
||||
"github.com/grafana/grafana/pkg/services/sqlstore"
|
||||
)
|
||||
|
||||
@@ -35,7 +36,7 @@ func (p *flatResourcePermission) Managed() bool {
|
||||
func (s *AccessControlStore) SetUserResourcePermission(
|
||||
ctx context.Context, orgID, userID int64,
|
||||
cmd accesscontrol.SetResourcePermissionCommand,
|
||||
hook func(session *sqlstore.DBSession, orgID, userID int64, resourceID, permission string) error,
|
||||
hook types.UserResourceHookFunc,
|
||||
) (*accesscontrol.ResourcePermission, error) {
|
||||
if userID == 0 {
|
||||
return nil, models.ErrUserNotFound
|
||||
@@ -45,13 +46,11 @@ func (s *AccessControlStore) SetUserResourcePermission(
|
||||
var permission *accesscontrol.ResourcePermission
|
||||
err = s.sql.WithTransactionalDbSession(ctx, func(sess *sqlstore.DBSession) error {
|
||||
permission, err = s.setResourcePermission(sess, orgID, managedUserRoleName(userID), s.userAdder(sess, orgID, userID), cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if hook != nil {
|
||||
if err == nil && hook != nil {
|
||||
return hook(sess, orgID, userID, cmd.ResourceID, cmd.Permission)
|
||||
}
|
||||
return nil
|
||||
|
||||
return err
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
@@ -64,7 +63,7 @@ func (s *AccessControlStore) SetUserResourcePermission(
|
||||
func (s *AccessControlStore) SetTeamResourcePermission(
|
||||
ctx context.Context, orgID, teamID int64,
|
||||
cmd accesscontrol.SetResourcePermissionCommand,
|
||||
hook func(session *sqlstore.DBSession, orgID, teamID int64, resourceID, permission string) error,
|
||||
hook types.TeamResourceHookFunc,
|
||||
) (*accesscontrol.ResourcePermission, error) {
|
||||
if teamID == 0 {
|
||||
return nil, models.ErrTeamNotFound
|
||||
@@ -75,13 +74,11 @@ func (s *AccessControlStore) SetTeamResourcePermission(
|
||||
|
||||
err = s.sql.WithTransactionalDbSession(ctx, func(sess *sqlstore.DBSession) error {
|
||||
permission, err = s.setResourcePermission(sess, orgID, managedTeamRoleName(teamID), s.teamAdder(sess, orgID, teamID), cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if hook != nil {
|
||||
if err == nil && hook != nil {
|
||||
return hook(sess, orgID, teamID, cmd.ResourceID, cmd.Permission)
|
||||
}
|
||||
return nil
|
||||
|
||||
return err
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
@@ -94,7 +91,7 @@ func (s *AccessControlStore) SetTeamResourcePermission(
|
||||
func (s *AccessControlStore) SetBuiltInResourcePermission(
|
||||
ctx context.Context, orgID int64, builtInRole string,
|
||||
cmd accesscontrol.SetResourcePermissionCommand,
|
||||
hook func(session *sqlstore.DBSession, orgID int64, builtInRole, resourceID, permission string) error,
|
||||
hook types.BuiltinResourceHookFunc,
|
||||
) (*accesscontrol.ResourcePermission, error) {
|
||||
if !models.RoleType(builtInRole).IsValid() || builtInRole == accesscontrol.RoleGrafanaAdmin {
|
||||
return nil, fmt.Errorf("invalid role: %s", builtInRole)
|
||||
@@ -105,10 +102,7 @@ func (s *AccessControlStore) SetBuiltInResourcePermission(
|
||||
|
||||
err = s.sql.WithTransactionalDbSession(ctx, func(sess *sqlstore.DBSession) error {
|
||||
permission, err = s.setResourcePermission(sess, orgID, managedBuiltInRoleName(builtInRole), s.builtInRoleAdder(sess, orgID, builtInRole), cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if hook != nil {
|
||||
if err == nil && hook != nil {
|
||||
return hook(sess, orgID, builtInRole, cmd.ResourceID, cmd.Permission)
|
||||
}
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user