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:
parent
6d7c258b5f
commit
d5168aa061
1 changed files with 9 additions and 8 deletions
17
acl/acl.go
17
acl/acl.go
|
@ -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
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue