mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-07 21:47:02 +09:00
Improve invite validation
This commit is contained in:
parent
90a75f6e25
commit
9f434b0edd
2 changed files with 12 additions and 3 deletions
|
@ -85,6 +85,10 @@ func (p AclPermissions) IsOwner() bool {
|
|||
return aclrecordproto.AclUserPermissions(p) == aclrecordproto.AclUserPermissions_Owner
|
||||
}
|
||||
|
||||
func (p AclPermissions) IsGuest() bool {
|
||||
return aclrecordproto.AclUserPermissions(p) == aclrecordproto.AclUserPermissions_Guest
|
||||
}
|
||||
|
||||
func (p AclPermissions) CanWrite() bool {
|
||||
switch aclrecordproto.AclUserPermissions(p) {
|
||||
case aclrecordproto.AclUserPermissions_Admin:
|
||||
|
|
|
@ -219,9 +219,14 @@ func (c *contentValidator) ValidateInvite(ch *aclrecordproto.AclAccountInvite, a
|
|||
if !c.aclState.Permissions(authorIdentity).CanManageAccounts() {
|
||||
return ErrInsufficientPermissions
|
||||
}
|
||||
if ch.InviteType == aclrecordproto.AclInviteType_AnyoneCanJoin &&
|
||||
(AclPermissions(ch.Permissions).IsOwner() || AclPermissions(ch.Permissions).NoPermissions()) {
|
||||
return ErrInsufficientPermissions
|
||||
permissions := AclPermissions(ch.Permissions)
|
||||
if ch.InviteType == aclrecordproto.AclInviteType_AnyoneCanJoin {
|
||||
if permissions.IsOwner() || permissions.NoPermissions() || permissions.IsGuest() {
|
||||
return ErrInsufficientPermissions
|
||||
}
|
||||
if ch.EncryptedReadKey == nil {
|
||||
return ErrIncorrectReadKey
|
||||
}
|
||||
}
|
||||
_, err = c.keyStore.PubKeyFromProto(ch.InviteKey)
|
||||
return
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue