From c09c9ba794ca46de4590297a351d09eb07ea2ad5 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 27 Feb 2024 19:11:27 +0100 Subject: [PATCH] Revoke invites --- commonspace/acl/aclclient/aclspaceclient.go | 15 +++++++++++++++ commonspace/object/acl/list/acltestsuite_test.go | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/commonspace/acl/aclclient/aclspaceclient.go b/commonspace/acl/aclclient/aclspaceclient.go index d51be42c..61182d42 100644 --- a/commonspace/acl/aclclient/aclspaceclient.go +++ b/commonspace/acl/aclclient/aclspaceclient.go @@ -36,6 +36,7 @@ type AclSpaceClient interface { ChangePermissions(ctx context.Context, permChange list.PermissionChangesPayload) (err error) RequestSelfRemove(ctx context.Context) (err error) RevokeInvite(ctx context.Context, inviteRecordId string) (err error) + RevokeAllInvites(ctx context.Context) (err error) AddAccounts(ctx context.Context, add list.AccountsAddPayload) (err error) } @@ -115,6 +116,20 @@ func (c *aclSpaceClient) RemoveAccounts(ctx context.Context, payload list.Accoun return c.sendRecordAndUpdate(ctx, c.spaceId, res) } +func (c *aclSpaceClient) RevokeAllInvites(ctx context.Context) (err error) { + c.acl.Lock() + payload := list.BatchRequestPayload{ + InviteRevokes: c.acl.AclState().InviteIds(), + } + res, err := c.acl.RecordBuilder().BuildBatchRequest(payload) + if err != nil { + c.acl.Unlock() + return + } + c.acl.Unlock() + return c.sendRecordAndUpdate(ctx, c.spaceId, res) +} + func (c *aclSpaceClient) StopSharing(ctx context.Context, readKeyChange list.ReadKeyChangePayload) (err error) { c.acl.Lock() var ( diff --git a/commonspace/object/acl/list/acltestsuite_test.go b/commonspace/object/acl/list/acltestsuite_test.go index f5b4dd6e..77e75943 100644 --- a/commonspace/object/acl/list/acltestsuite_test.go +++ b/commonspace/object/acl/list/acltestsuite_test.go @@ -111,6 +111,13 @@ func TestAclExecutor(t *testing.T) { {"a.batch::remove:e,y;add:z,rw,mz|u,r,mu;revoke:inv1Id;approve:l,r;approve:p,adm;decline:s", nil}, {"p.remove::l", nil}, {"s.join::inv1Id", ErrNoSuchInvite}, + {"p.invite::i1", nil}, + {"p.invite::i2", nil}, + {"r.join::i1", nil}, + {"q.join::i2", nil}, + {"p.batch::revoke:i1;revoke:i2", nil}, + {"f.join::i1", ErrNoSuchInvite}, + {"f.join::i2", ErrNoSuchInvite}, } for _, cmd := range cmds { err := a.Execute(cmd.cmd)