diff --git a/pkg/collections/collection.go b/pkg/collections/collection.go index 6c87ec232003b71a3873888a9f00e8513959fed4..a24e7e12b46b896734e96548d415e338f85f75bb 100644 --- a/pkg/collections/collection.go +++ b/pkg/collections/collection.go @@ -23,6 +23,8 @@ type Access struct { HiddenFields []string // Поля не отображаемые в интерфейсе и не возвращаемые API DenyReadFields []string // Поля недоступные для редактирования и не обновляемые через API DenyWriteFields []string // Поля отображаемые в интерфейсе, но не возвращаемые в API + ReadFilter string // Дополнительный фильтр на чтение + WriteFilter string // Дополнительный фильтр на запись Hidden bool // Скрыть коллекцию в интерфейсе от пользователя } @@ -249,3 +251,35 @@ func GetCollectionsIDs(collections []*Collection) []string { } return res } + +func AccessFromRule(rule *permission.Rule) *Access { + if rule == nil { + return nil + } + + return &Access{ + Actions: rule.Actions, + HiddenFields: rule.HiddenFields, + DenyReadFields: rule.DenyReadFields, + DenyWriteFields: rule.DenyWriteFields, + ReadFilter: rule.ReadFilter, + WriteFilter: rule.WriteFilter, + Hidden: rule.Hidden, + } +} + +func RuleFromAccess(access *Access) *permission.Rule { + if access == nil { + return nil + } + + return &permission.Rule{ + Actions: access.Actions, + HiddenFields: access.HiddenFields, + DenyReadFields: access.DenyReadFields, + DenyWriteFields: access.DenyWriteFields, + ReadFilter: access.ReadFilter, + WriteFilter: access.WriteFilter, + Hidden: access.Hidden, + } +}