diff --git a/pkg/permission/ruleset.go b/pkg/permission/ruleset.go index a915a055759b3185825820233b623eb0d4b21762..0843afc79922be9a20c06009d4084a281b3cd68f 100644 --- a/pkg/permission/ruleset.go +++ b/pkg/permission/ruleset.go @@ -127,10 +127,10 @@ func (r Rule) GetPermission(action Action) *Permission { case ActionRead: p.Filter = r.ReadFilter p.UnallowedFields = append(p.UnallowedFields, r.HiddenFields...) - p.UnallowedFields = append(p.UnallowedFields, data.Difference(r.WriteonlyFields, r.ReadonlyFields)...) + p.UnallowedFields = append(p.UnallowedFields, r.WriteonlyFields...) case ActionCreate, ActionUpdate, ActionDelete: p.Filter = r.WriteFilter - p.UnallowedFields = append(p.UnallowedFields, data.Difference(r.ReadonlyFields, r.WriteonlyFields)...) + p.UnallowedFields = append(p.UnallowedFields, r.ReadonlyFields...) } p.UnallowedFields = data.SetFromSlice(p.UnallowedFields) diff --git a/pkg/permission/ruleset_test.go b/pkg/permission/ruleset_test.go index a05753844b25dcc3e0484b27384e89a39c7e26f5..175c36261152afcf2b2c585382588f97b5465591 100644 --- a/pkg/permission/ruleset_test.go +++ b/pkg/permission/ruleset_test.go @@ -68,7 +68,7 @@ func TestRule_GetPermission(t *testing.T) { name: "ActionRead readonly&writeonly", action: ActionRead, rule: Rule{Actions: []Action{ActionRead, ActionUpdate}, ReadonlyFields: []string{"f1"}, HiddenFields: []string{"f2"}, WriteonlyFields: []string{"f1"}}, - unallowedFields: []string{"f2"}, + unallowedFields: []string{"f1", "f2"}, }, { name: "ActionUpdate", @@ -80,7 +80,7 @@ func TestRule_GetPermission(t *testing.T) { name: "ActionUpdate readonly&writeonly", action: ActionUpdate, rule: Rule{Actions: []Action{ActionRead, ActionUpdate}, ReadonlyFields: []string{"f1"}, HiddenFields: []string{"f2"}, WriteonlyFields: []string{"f1"}}, - unallowedFields: []string{}, + unallowedFields: []string{"f1"}, }, } for _, tt := range tests {