From 94aea5bafb4ecfee417f73e6115e789c0b8dab19 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 10 Jul 2023 23:17:05 +0200 Subject: [PATCH] Expose Acl in space --- commonspace/object/acl/list/list.go | 16 +++++++++ commonspace/object/acl/list/list_test.go | 42 +++++++---------------- commonspace/object/acl/syncacl/syncacl.go | 4 +-- commonspace/space.go | 5 +++ 4 files changed, 36 insertions(+), 31 deletions(-) diff --git a/commonspace/object/acl/list/list.go b/commonspace/object/acl/list/list.go index 12d3bed8..a2177ea4 100644 --- a/commonspace/object/acl/list/list.go +++ b/commonspace/object/acl/list/list.go @@ -10,6 +10,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" "github.com/anyproto/any-sync/consensus/consensusproto" + "github.com/anyproto/any-sync/util/cidutil" "github.com/anyproto/any-sync/util/crypto" ) @@ -319,3 +320,18 @@ func (a *aclList) IterateFrom(startId string, iterFunc IterFunc) { func (a *aclList) Close(ctx context.Context) (err error) { return nil } + +func WrapAclRecord(rawRec *consensusproto.RawRecord) *consensusproto.RawRecordWithId { + payload, err := rawRec.Marshal() + if err != nil { + panic(err) + } + id, err := cidutil.NewCidFromBytes(payload) + if err != nil { + panic(err) + } + return &consensusproto.RawRecordWithId{ + Payload: payload, + Id: id, + } +} diff --git a/commonspace/object/acl/list/list_test.go b/commonspace/object/acl/list/list_test.go index b1dda008..6ce4ea86 100644 --- a/commonspace/object/acl/list/list_test.go +++ b/commonspace/object/acl/list/list_test.go @@ -7,26 +7,10 @@ import ( "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/aclrecordproto" "github.com/anyproto/any-sync/consensus/consensusproto" - "github.com/anyproto/any-sync/util/cidutil" "github.com/anyproto/any-sync/util/crypto" "github.com/stretchr/testify/require" ) -func wrapRecord(rawRec *consensusproto.RawRecord) *consensusproto.RawRecordWithId { - payload, err := rawRec.Marshal() - if err != nil { - panic(err) - } - id, err := cidutil.NewCidFromBytes(payload) - if err != nil { - panic(err) - } - return &consensusproto.RawRecordWithId{ - Payload: payload, - Id: id, - } -} - type aclFixture struct { ownerKeys *accountdata.AccountKeys accountKeys *accountdata.AccountKeys @@ -71,7 +55,7 @@ func (fx *aclFixture) inviteAccount(t *testing.T, perms AclPermissions) { // building invite inv, err := ownerAcl.RecordBuilder().BuildInvite() require.NoError(t, err) - inviteRec := wrapRecord(inv.InviteRec) + inviteRec := WrapAclRecord(inv.InviteRec) fx.addRec(t, inviteRec) // building request join @@ -80,7 +64,7 @@ func (fx *aclFixture) inviteAccount(t *testing.T, perms AclPermissions) { InviteKey: inv.InviteKey, }) require.NoError(t, err) - requestJoinRec := wrapRecord(requestJoin) + requestJoinRec := WrapAclRecord(requestJoin) fx.addRec(t, requestJoinRec) // building request accept @@ -92,7 +76,7 @@ func (fx *aclFixture) inviteAccount(t *testing.T, perms AclPermissions) { // validate err = ownerAcl.ValidateRawRecord(requestAccept) require.NoError(t, err) - requestAcceptRec := wrapRecord(requestAccept) + requestAcceptRec := WrapAclRecord(requestAccept) fx.addRec(t, requestAcceptRec) // checking acl state @@ -132,13 +116,13 @@ func TestAclList_InviteRevoke(t *testing.T) { // building invite inv, err := fx.ownerAcl.RecordBuilder().BuildInvite() require.NoError(t, err) - inviteRec := wrapRecord(inv.InviteRec) + inviteRec := WrapAclRecord(inv.InviteRec) fx.addRec(t, inviteRec) // building invite revoke inviteRevoke, err := fx.ownerAcl.RecordBuilder().BuildInviteRevoke(ownerState.lastRecordId) require.NoError(t, err) - inviteRevokeRec := wrapRecord(inviteRevoke) + inviteRevokeRec := WrapAclRecord(inviteRevoke) fx.addRec(t, inviteRevokeRec) // checking acl state @@ -159,7 +143,7 @@ func TestAclList_RequestDecline(t *testing.T) { // building invite inv, err := ownerAcl.RecordBuilder().BuildInvite() require.NoError(t, err) - inviteRec := wrapRecord(inv.InviteRec) + inviteRec := WrapAclRecord(inv.InviteRec) fx.addRec(t, inviteRec) // building request join @@ -168,13 +152,13 @@ func TestAclList_RequestDecline(t *testing.T) { InviteKey: inv.InviteKey, }) require.NoError(t, err) - requestJoinRec := wrapRecord(requestJoin) + requestJoinRec := WrapAclRecord(requestJoin) fx.addRec(t, requestJoinRec) // building request decline requestDecline, err := ownerAcl.RecordBuilder().BuildRequestDecline(ownerState.lastRecordId) require.NoError(t, err) - requestDeclineRec := wrapRecord(requestDecline) + requestDeclineRec := WrapAclRecord(requestDecline) fx.addRec(t, requestDeclineRec) // checking acl state @@ -198,7 +182,7 @@ func TestAclList_Remove(t *testing.T) { ReadKey: newReadKey, }) require.NoError(t, err) - removeRec := wrapRecord(remove) + removeRec := WrapAclRecord(remove) fx.addRec(t, removeRec) // checking acl state @@ -225,7 +209,7 @@ func TestAclList_ReadKeyChange(t *testing.T) { newReadKey := crypto.NewAES() readKeyChange, err := fx.ownerAcl.RecordBuilder().BuildReadKeyChange(newReadKey) require.NoError(t, err) - readKeyRec := wrapRecord(readKeyChange) + readKeyRec := WrapAclRecord(readKeyChange) fx.addRec(t, readKeyRec) // checking acl state @@ -255,7 +239,7 @@ func TestAclList_PermissionChange(t *testing.T) { Permissions: AclPermissions(aclrecordproto.AclUserPermissions_Writer), }) require.NoError(t, err) - permissionChangeRec := wrapRecord(permissionChange) + permissionChangeRec := WrapAclRecord(permissionChange) fx.addRec(t, permissionChangeRec) // checking acl state @@ -279,7 +263,7 @@ func TestAclList_RequestRemove(t *testing.T) { removeRequest, err := fx.accountAcl.RecordBuilder().BuildRequestRemove() require.NoError(t, err) - removeRequestRec := wrapRecord(removeRequest) + removeRequestRec := WrapAclRecord(removeRequest) fx.addRec(t, removeRequestRec) recs := fx.accountAcl.AclState().RemoveRecords() @@ -292,7 +276,7 @@ func TestAclList_RequestRemove(t *testing.T) { ReadKey: newReadKey, }) require.NoError(t, err) - removeRec := wrapRecord(remove) + removeRec := WrapAclRecord(remove) fx.addRec(t, removeRec) // checking acl state diff --git a/commonspace/object/acl/syncacl/syncacl.go b/commonspace/object/acl/syncacl/syncacl.go index bd63c095..98e61127 100644 --- a/commonspace/object/acl/syncacl/syncacl.go +++ b/commonspace/object/acl/syncacl/syncacl.go @@ -46,7 +46,7 @@ func (s *SyncAcl) Run(ctx context.Context) (err error) { } func (s *SyncAcl) HandleRequest(ctx context.Context, senderId string, request *spacesyncproto.ObjectSyncMessage) (response *spacesyncproto.ObjectSyncMessage, err error) { - return s.HandleRequest(ctx, senderId, request) + return s.syncHandler.HandleRequest(ctx, senderId, request) } func (s *SyncAcl) SetHeadUpdater(updater HeadUpdater) { @@ -54,7 +54,7 @@ func (s *SyncAcl) SetHeadUpdater(updater HeadUpdater) { } func (s *SyncAcl) HandleMessage(ctx context.Context, senderId string, request *spacesyncproto.ObjectSyncMessage) (err error) { - return s.HandleMessage(ctx, senderId, request) + return s.syncHandler.HandleMessage(ctx, senderId, request) } func (s *SyncAcl) Init(a *app.App) (err error) { diff --git a/commonspace/space.go b/commonspace/space.go index ef5119de..d2d6d486 100644 --- a/commonspace/space.go +++ b/commonspace/space.go @@ -59,6 +59,7 @@ func NewSpaceId(id string, repKey uint64) string { type Space interface { Id() string Init(ctx context.Context) error + Acl() list.AclList StoredIds() []string DebugAllHeads() []headsync.TreeHeads @@ -153,6 +154,10 @@ func (s *space) TreeBuilder() objecttreebuilder.TreeBuilder { return s.treeBuilder } +func (s *space) Acl() list.AclList { + return s.aclList +} + func (s *space) Id() string { return s.state.SpaceId }