1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-08 05:57:03 +09:00

Merge pull request #456 from anyproto/GO-5679-fix-request-to-join-links

GO-5679: Request to join checks
This commit is contained in:
Mikhail Rakhmanov 2025-05-21 20:30:36 +02:00 committed by GitHub
commit 3b9880eff8
Signed by: github
GPG key ID: B5690EEEBB952194
3 changed files with 6 additions and 1 deletions

View file

@ -488,7 +488,7 @@ func (a *aclRecordBuilder) buildInviteRevoke(inviteRecordId string) (value *aclr
func (a *aclRecordBuilder) BuildRequestJoin(payload RequestJoinPayload) (rawRecord *consensusproto.RawRecord, err error) { func (a *aclRecordBuilder) BuildRequestJoin(payload RequestJoinPayload) (rawRecord *consensusproto.RawRecord, err error) {
var inviteId string var inviteId string
for id, inv := range a.state.invites { for id, inv := range a.state.invites {
if inv.Key.Equals(payload.InviteKey.GetPublic()) && inv.Type == aclrecordproto.AclInviteType_RequestToJoin { if inv.Key.Equals(payload.InviteKey.GetPublic()) {
inviteId = id inviteId = id
} }
} }

View file

@ -142,6 +142,8 @@ func TestAclExecutor(t *testing.T) {
{"a.batch::revoke:oldInvId;invite_anyone:someId,a", nil}, {"a.batch::revoke:oldInvId;invite_anyone:someId,a", nil},
{"new4.invite_join::someId", nil}, {"new4.invite_join::someId", nil},
{"new4.add::super,r,superm", nil}, {"new4.add::super,r,superm", nil},
// check that users can't join using request to join for anyone can join links
{"new5.join::someId", ErrNoSuchInvite},
} }
for _, cmd := range cmds { for _, cmd := range cmds {
err := a.Execute(cmd.cmd) err := a.Execute(cmd.cmd)

View file

@ -282,6 +282,9 @@ func (c *contentValidator) ValidateRequestJoin(ch *aclrecordproto.AclAccountRequ
if !c.aclState.Permissions(authorIdentity).NoPermissions() { if !c.aclState.Permissions(authorIdentity).NoPermissions() {
return ErrInsufficientPermissions return ErrInsufficientPermissions
} }
if invite.Type != aclrecordproto.AclInviteType_RequestToJoin {
return ErrNoSuchInvite
}
inviteIdentity, err := c.keyStore.PubKeyFromProto(ch.InviteIdentity) inviteIdentity, err := c.keyStore.PubKeyFromProto(ch.InviteIdentity)
if err != nil { if err != nil {
return return