Файли
2026-11-08 03:05:46 +00:00

56 рядки
1.0 KiB
Go

package domain
import "time"
type Role string
const (
RoleOwner Role = "owner"
RoleEditor Role = "editor"
RoleReader Role = "reader"
)
type Action int
const (
ActionViewList Action = iota
ActionEditListMeta
ActionDeleteList
ActionManageShares
ActionViewItems
ActionAddItem
ActionEditItem
ActionDeleteItem
ActionChangeItemState
ActionReserveItem
)
type List struct {
ID int64
OwnerID int64
Title string
CreatedAt time.Time
UpdatedAt time.Time
}
type Access struct {
List List
Role Role
}
func Allowed(role Role, action Action) bool {
switch action {
case ActionViewList:
return role == RoleOwner || role == RoleEditor || role == RoleReader
case ActionEditListMeta, ActionDeleteList, ActionManageShares:
return role == RoleOwner
case ActionViewItems:
return role == RoleOwner || role == RoleEditor || role == RoleReader
case ActionAddItem, ActionEditItem, ActionDeleteItem,
ActionChangeItemState, ActionReserveItem:
return role == RoleOwner || role == RoleEditor
default:
return false
}
}