Added default group policy

gql_cataclysm
noah metz 2023-10-03 21:18:06 -06:00
parent e042384b3f
commit 9eadb00397
2 changed files with 11 additions and 21 deletions

@ -1,36 +1,26 @@
package graphvent
import (
"encoding/json"
)
type GroupExt struct {
Members map[NodeID]string `gv:"members"`
}
var GroupReadPolicy = NewAllNodesPolicy(Tree{
SerializedType(ReadSignalType): {
SerializedType(GroupExtType): {
Hash(FieldNameBase, "members"): nil,
},
},
})
func (ext *GroupExt) Type() ExtType {
return GroupExtType
}
func (ext *GroupExt) MarshalBinary() ([]byte, error) {
return json.Marshal(ext)
type GroupExt struct {
Members []NodeID `gv:"members"`
}
func NewGroupExt(members map[NodeID]string) *GroupExt {
if members == nil {
members = map[NodeID]string{}
}
func NewGroupExt(members []NodeID) *GroupExt {
return &GroupExt{
Members: members,
}
}
func (ext *GroupExt) Deserialize(ctx *Context, data []byte) error {
ext.Members = map[NodeID]string{}
return json.Unmarshal(data, ext)
}
func (ext *GroupExt) Process(ctx *Context, node *Node, source NodeID, signal Signal) Messages {
return nil
}

@ -137,7 +137,7 @@ func (policy MemberOfPolicy) Allows(ctx *Context, principal_id NodeID, action Tr
if id == node.ID {
ext, err := GetExt[*GroupExt](node, GroupExtType)
if err == nil {
for member := range(ext.Members) {
for _, member := range(ext.Members) {
if member == principal_id {
if rule.Allows(action) == Allow {
return nil, Allow