64 lines
1.8 KiB
Go
64 lines
1.8 KiB
Go
package dashboardaccess
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/grafana/grafana/pkg/util"
|
|
)
|
|
|
|
type PermissionType int
|
|
|
|
const (
|
|
PERMISSION_VIEW PermissionType = 1 << iota
|
|
PERMISSION_EDIT
|
|
PERMISSION_ADMIN
|
|
)
|
|
|
|
func (p PermissionType) String() string {
|
|
names := map[int]string{
|
|
int(PERMISSION_VIEW): "View",
|
|
int(PERMISSION_EDIT): "Edit",
|
|
int(PERMISSION_ADMIN): "Admin",
|
|
}
|
|
return names[int(p)]
|
|
}
|
|
|
|
// Typed errors
|
|
var (
|
|
ErrDashboardACLInfoMissing = errors.New("user id and team id cannot both be empty for a dashboard permission")
|
|
ErrDashboardPermissionDashboardEmpty = errors.New("dashboard id must be greater than zero for a dashboard permission")
|
|
ErrFolderACLInfoMissing = errors.New("user id and team id cannot both be empty for a folder permission")
|
|
ErrFolderPermissionFolderEmpty = errors.New("folder id must be greater than zero for a folder permission")
|
|
ErrPermissionsWithRoleNotAllowed = errors.New("permissions cannot have both a user and team")
|
|
ErrPermissionsWithUserAndTeamNotAllowed = errors.New("team and user permissions cannot have an associated role")
|
|
)
|
|
|
|
// DashboardErr represents a dashboard error.
|
|
type DashboardErr struct {
|
|
StatusCode int
|
|
Status string
|
|
Reason string
|
|
}
|
|
|
|
// Equal returns whether equal to another DashboardErr.
|
|
func (e DashboardErr) Equal(o DashboardErr) bool {
|
|
return o.StatusCode == e.StatusCode && o.Status == e.Status && o.Reason == e.Reason
|
|
}
|
|
|
|
// Error returns the error message.
|
|
func (e DashboardErr) Error() string {
|
|
if e.Reason != "" {
|
|
return e.Reason
|
|
}
|
|
return "Dashboard Error"
|
|
}
|
|
|
|
// Body returns the error's response body, if applicable.
|
|
func (e DashboardErr) Body() util.DynMap {
|
|
if e.Status == "" {
|
|
return nil
|
|
}
|
|
|
|
return util.DynMap{"status": e.Status, "message": e.Error()}
|
|
}
|