2023-11-15 10:54:54 -06:00
|
|
|
package accesscontrol
|
|
|
|
|
|
|
|
import (
|
2023-12-01 17:42:11 -06:00
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
|
|
|
"github.com/grafana/grafana/pkg/util/errutil"
|
2023-11-15 10:54:54 -06:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2024-03-14 13:03:53 -05:00
|
|
|
ErrAuthorizationBase = errutil.Forbidden("alerting.unauthorized")
|
2023-11-15 10:54:54 -06:00
|
|
|
)
|
2023-12-01 17:42:11 -06:00
|
|
|
|
|
|
|
func NewAuthorizationErrorWithPermissions(action string, eval accesscontrol.Evaluator) error {
|
|
|
|
msg := fmt.Sprintf("user is not authorized to %s", action)
|
2024-03-14 13:03:53 -05:00
|
|
|
err := ErrAuthorizationBase.Errorf(msg)
|
2023-12-01 17:42:11 -06:00
|
|
|
err.PublicMessage = msg
|
|
|
|
if eval != nil {
|
|
|
|
err.PublicPayload = map[string]any{
|
|
|
|
"permissions": eval.GoString(),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewAuthorizationErrorGeneric(action string) error {
|
|
|
|
return NewAuthorizationErrorWithPermissions(action, nil)
|
|
|
|
}
|