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

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