From 043260462494272c0cb1950b05ac985275307a3f Mon Sep 17 00:00:00 2001
From: Semyon Krestyaninov <krestyaninov@perx.ru>
Date: Wed, 9 Apr 2025 09:14:54 +0000
Subject: [PATCH] =?UTF-8?q?feat(core):=20=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8?=
 =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D1=8B=20=D0=B2=D1=81=D0=BF=D0=BE?=
 =?UTF-8?q?=D0=BC=D0=BE=D0=B3=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B?=
 =?UTF-8?q?=D0=B5=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20=D0=B4?=
 =?UTF-8?q?=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5=D1=80=D1=82=D0=B0?=
 =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?=
 =?UTF-8?q?=D1=80=20=D0=BC=D0=B5=D0=B6=D0=B4=D1=83=20=D1=82=D0=B8=D0=BF?=
 =?UTF-8?q?=D0=B0=D0=BC=D0=B8=20`collections.Access`=20=D0=B8=20`permissio?=
 =?UTF-8?q?n.Rule`?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Issue: #3161
---
 pkg/collections/collection.go | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/pkg/collections/collection.go b/pkg/collections/collection.go
index 6c87ec23..a24e7e12 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,
+	}
+}
-- 
GitLab