1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-07 21:47:02 +09:00

acl members limits: counts writers

This commit is contained in:
Sergey Cherepanov 2024-04-29 16:40:38 +02:00
parent 6d7c258b5f
commit d5168aa061
No known key found for this signature in database
GPG key ID: 87F8EDE8FBDF637C

View file

@ -96,11 +96,14 @@ func (as *aclService) AddRecord(ctx context.Context, spaceId string, rec *consen
acl.RLock()
defer acl.RUnlock()
var beforeReaders int
var beforeReaders, beforeWriters int
for _, acc := range acl.AclState().CurrentAccounts() {
if !acc.Permissions.NoPermissions() {
beforeReaders++
}
if acc.Permissions.CanWrite() {
beforeWriters++
}
}
err = acl.ValidateRawRecord(rec, func(state *list.AclState) error {
@ -114,13 +117,11 @@ func (as *aclService) AddRecord(ctx context.Context, spaceId string, rec *consen
writers++
}
}
if readers >= beforeReaders {
if readers > beforeReaders && uint32(readers) > limits.ReadMembers {
return ErrLimitExceed
}
if uint32(writers) > limits.WriteMembers {
return ErrLimitExceed
}
if readers > beforeReaders && uint32(readers) > limits.ReadMembers {
return ErrLimitExceed
}
if writers > beforeWriters && uint32(writers) > limits.WriteMembers {
return ErrLimitExceed
}
return nil
})