acbbfde256
* expand AuthZ service logic to also evaluate action sets * handle folder creation * fix test * simplify mapper code Co-authored-by: gamab <gabi.mabs@gmail.com> * more accurate variable name Co-authored-by: gamab <gabi.mabs@gmail.com> * break alerting import cycle * Apply suggestion from @gamab --------- Co-authored-by: gamab <gabi.mabs@gmail.com> Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
45 lines
1.3 KiB
Go
45 lines
1.3 KiB
Go
package models
|
|
|
|
import (
|
|
// #nosec G505 Used only for shortening the uid, not for security purposes.
|
|
"crypto/sha1"
|
|
"encoding/hex"
|
|
|
|
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
|
"github.com/grafana/grafana/pkg/util"
|
|
)
|
|
|
|
const (
|
|
ScopeReceiversRoot = "receivers"
|
|
AlertRolesGroup = "Alerting"
|
|
|
|
PermissionView ReceiverPermission = "View"
|
|
PermissionEdit ReceiverPermission = "Edit"
|
|
PermissionAdmin ReceiverPermission = "Admin"
|
|
)
|
|
|
|
var (
|
|
ScopeReceiversProvider = ReceiverScopeProvider{accesscontrol.NewScopeProvider(ScopeReceiversRoot)}
|
|
ScopeReceiversAll = ScopeReceiversProvider.GetResourceAllScope()
|
|
)
|
|
|
|
type ReceiverScopeProvider struct {
|
|
accesscontrol.ScopeProvider
|
|
}
|
|
|
|
func (p ReceiverScopeProvider) GetResourceScopeUID(uid string) string {
|
|
return ScopeReceiversProvider.ScopeProvider.GetResourceScopeUID(p.GetResourceIDFromUID(uid))
|
|
}
|
|
|
|
// GetResourceIDFromUID converts a receiver uid to a resource id. This is necessary as resource ids are limited to 40 characters.
|
|
// If the uid is already less than or equal to 40 characters, it is returned as is.
|
|
func (p ReceiverScopeProvider) GetResourceIDFromUID(uid string) string {
|
|
if len(uid) <= util.MaxUIDLength {
|
|
return uid
|
|
}
|
|
// #nosec G505 Used only for shortening the uid, not for security purposes.
|
|
h := sha1.New()
|
|
h.Write([]byte(uid))
|
|
return hex.EncodeToString(h.Sum(nil))
|
|
}
|