Skip to content

Commit ae51b51

Browse files
committed
feat: add limits for missing categories
1 parent 093c261 commit ae51b51

4 files changed

Lines changed: 107 additions & 36 deletions

File tree

model/permission/defaults.go

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,36 @@ var (
3838
}
3939

4040
defaultLimits = Limits{
41-
IPLimit: 7200,
42-
DocsLimit: 10,
43-
SearchLimit: 10,
44-
IndicesLimit: 10,
45-
CatLimit: 10,
46-
ClustersLimit: 10,
47-
MiscLimit: 10,
41+
IPLimit: 7200,
42+
DocsLimit: 10,
43+
SearchLimit: 10,
44+
IndicesLimit: 10,
45+
CatLimit: 10,
46+
ClustersLimit: 10,
47+
MiscLimit: 10,
48+
UserLimit: 10,
49+
PermissionLimit: 10,
50+
AnalyticsLimit: 10,
51+
RulesLimit: 10,
52+
TemplatesLimit: 10,
53+
SuggestionsLimit: 10,
54+
StreamsLimit: 10,
4855
}
4956

5057
defaultAdminLimits = Limits{
51-
IPLimit: 7200,
52-
DocsLimit: 30,
53-
SearchLimit: 30,
54-
IndicesLimit: 30,
55-
CatLimit: 30,
56-
ClustersLimit: 30,
57-
MiscLimit: 30,
58+
IPLimit: 7200,
59+
DocsLimit: 30,
60+
SearchLimit: 30,
61+
IndicesLimit: 30,
62+
CatLimit: 30,
63+
ClustersLimit: 30,
64+
MiscLimit: 30,
65+
UserLimit: 30,
66+
PermissionLimit: 30,
67+
AnalyticsLimit: 30,
68+
RulesLimit: 30,
69+
TemplatesLimit: 30,
70+
SuggestionsLimit: 30,
71+
StreamsLimit: 30,
5872
}
5973
)

model/permission/permission.go

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,20 @@ type Permission struct {
5050

5151
// Limits defines the rate limits for each category.
5252
type Limits struct {
53-
IPLimit int64 `json:"ip_limit"`
54-
DocsLimit int64 `json:"docs_limit"`
55-
SearchLimit int64 `json:"search_limit"`
56-
IndicesLimit int64 `json:"indices_limit"`
57-
CatLimit int64 `json:"cat_limit"`
58-
ClustersLimit int64 `json:"clusters_limit"`
59-
MiscLimit int64 `json:"misc_limit"`
53+
IPLimit int64 `json:"ip_limit"`
54+
DocsLimit int64 `json:"docs_limit"`
55+
SearchLimit int64 `json:"search_limit"`
56+
IndicesLimit int64 `json:"indices_limit"`
57+
CatLimit int64 `json:"cat_limit"`
58+
ClustersLimit int64 `json:"clusters_limit"`
59+
MiscLimit int64 `json:"misc_limit"`
60+
UserLimit int64 `json:"user_limit"`
61+
PermissionLimit int64 `json:"permission_limit"`
62+
AnalyticsLimit int64 `json:"analytics_limit"`
63+
RulesLimit int64 `json:"rules_limit"`
64+
TemplatesLimit int64 `json:"templates_limit"`
65+
SuggestionsLimit int64 `json:"suggestions_limit"`
66+
StreamsLimit int64 `json:"streams_limit"`
6067
}
6168

6269
// Options is a function type used to define a permission's properties.
@@ -421,6 +428,20 @@ func (p *Permission) GetLimitFor(c category.Category) (int64, error) {
421428
return p.Limits.ClustersLimit, nil
422429
case category.Misc:
423430
return p.Limits.MiscLimit, nil
431+
case category.User:
432+
return p.Limits.UserLimit, nil
433+
case category.Permission:
434+
return p.Limits.PermissionLimit, nil
435+
case category.Analytics:
436+
return p.Limits.AnalyticsLimit, nil
437+
case category.Rules:
438+
return p.Limits.RulesLimit, nil
439+
case category.Templates:
440+
return p.Limits.TemplatesLimit, nil
441+
case category.Suggestions:
442+
return p.Limits.SuggestionsLimit, nil
443+
case category.Streams:
444+
return p.Limits.StreamsLimit, nil
424445
default:
425446
return -1, fmt.Errorf(`we do not rate limit "%s" category`, c)
426447
}
@@ -509,6 +530,28 @@ func (p *Permission) GetPatch(rolePatched bool) (map[string]interface{}, error)
509530
if p.Limits.MiscLimit != 0 {
510531
limits["misc_limit"] = p.Limits.MiscLimit
511532
}
533+
if p.Limits.UserLimit != 0 {
534+
limits["user_limit"] = p.Limits.UserLimit
535+
}
536+
if p.Limits.PermissionLimit != 0 {
537+
limits["permission_limit"] = p.Limits.PermissionLimit
538+
}
539+
if p.Limits.AnalyticsLimit != 0 {
540+
limits["analytics_limit"] = p.Limits.AnalyticsLimit
541+
}
542+
if p.Limits.RulesLimit != 0 {
543+
limits["rules_limit"] = p.Limits.RulesLimit
544+
}
545+
if p.Limits.TemplatesLimit != 0 {
546+
limits["templates_limit"] = p.Limits.TemplatesLimit
547+
}
548+
if p.Limits.SuggestionsLimit != 0 {
549+
limits["suggestions_limit"] = p.Limits.SuggestionsLimit
550+
}
551+
if p.Limits.StreamsLimit != 0 {
552+
limits["streams_limit"] = p.Limits.StreamsLimit
553+
}
554+
512555
patch["limits"] = limits
513556
}
514557
if p.Description != "" {

plugins/auth/dao_test.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ var getPermissionTest = []struct {
7676
&ServerSetup{
7777
Method: "GET",
7878
Path: "/test/_doc/perm1",
79-
Body: "",
79+
Body: "",
8080
Response: `{"_index":"perm1","_type":"doc","_id":"user1","_version":1,"found":true,"_source":{"first_name":"John","last_name":"Smith","age":25}}`,
8181
},
8282
[]byte(`{"_index":"perm1","_type":"doc","_id":"user1","_version":1,"found":true,"_source":{"first_name":"John","last_name":"Smith","age":25}}`),
@@ -189,13 +189,20 @@ func TestPutUser(t *testing.T) {
189189
}
190190

191191
var defaultLimits = &permission.Limits{
192-
IPLimit: 7200,
193-
DocsLimit: 30,
194-
SearchLimit: 30,
195-
IndicesLimit: 30,
196-
CatLimit: 30,
197-
ClustersLimit: 30,
198-
MiscLimit: 30,
192+
IPLimit: 7200,
193+
DocsLimit: 30,
194+
SearchLimit: 30,
195+
IndicesLimit: 30,
196+
CatLimit: 30,
197+
ClustersLimit: 30,
198+
MiscLimit: 30,
199+
UserLimit: 30,
200+
PermissionLimit: 30,
201+
AnalyticsLimit: 30,
202+
RulesLimit: 30,
203+
TemplatesLimit: 30,
204+
SuggestionsLimit: 30,
205+
StreamsLimit: 30,
199206
}
200207

201208
var perm = permission.Permission{

plugins/permissions/dao_test.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -232,13 +232,20 @@ func TestPatchPermission(t *testing.T) {
232232
}
233233

234234
var defaultLimits = &permission.Limits{
235-
IPLimit: 7200,
236-
DocsLimit: 30,
237-
SearchLimit: 30,
238-
IndicesLimit: 30,
239-
CatLimit: 30,
240-
ClustersLimit: 30,
241-
MiscLimit: 30,
235+
IPLimit: 7200,
236+
DocsLimit: 30,
237+
SearchLimit: 30,
238+
IndicesLimit: 30,
239+
CatLimit: 30,
240+
ClustersLimit: 30,
241+
MiscLimit: 30,
242+
UserLimit: 30,
243+
PermissionLimit: 30,
244+
AnalyticsLimit: 30,
245+
RulesLimit: 30,
246+
TemplatesLimit: 30,
247+
SuggestionsLimit: 30,
248+
StreamsLimit: 30,
242249
}
243250

244251
var p = permission.Permission{

0 commit comments

Comments
 (0)