Docker/Voltaserve/api/model/permission_model.go
2024-04-17 20:22:30 +02:00

59 lines
1.3 KiB
Go

package model
const (
PermissionViewer = "viewer"
PermissionEditor = "editor"
PermissionOwner = "owner"
)
type CoreUserPermission interface {
GetUserID() string
GetValue() string
}
type CoreGroupPermission interface {
GetGroupID() string
GetValue() string
}
func GteViewerPermission(permission string) bool {
return permission == PermissionViewer || permission == PermissionEditor || permission == PermissionOwner
}
func GteEditorPermission(permission string) bool {
return permission == PermissionEditor || permission == PermissionOwner
}
func GteOwnerPermission(permission string) bool {
return permission == PermissionOwner
}
func IsEquivalentPermission(permission string, otherPermission string) bool {
if permission == otherPermission {
return true
}
if otherPermission == PermissionViewer && GteViewerPermission(permission) {
return true
}
if otherPermission == PermissionEditor && GteEditorPermission(permission) {
return true
}
if otherPermission == PermissionOwner && GteOwnerPermission(permission) {
return true
}
return false
}
func GetPermissionWeight(permission string) int {
if permission == PermissionViewer {
return 1
}
if permission == PermissionEditor {
return 2
}
if permission == PermissionOwner {
return 3
}
return 0
}