Skip to content

Commit 207516a

Browse files
authored
fix: default rate limits (#114)
1 parent 5ff09de commit 207516a

2 files changed

Lines changed: 37 additions & 3 deletions

File tree

model/permission/permission.go

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,10 +217,44 @@ func validateReferers(referers []string) error {
217217
return nil
218218
}
219219

220+
func getNormalizedLimit(limit int64, defaultLimit int64) int64 {
221+
if limit == 0 {
222+
return defaultLimit
223+
}
224+
return limit
225+
}
226+
220227
// SetLimits sets the rate limits for each category in a permission.
221-
func SetLimits(limits *Limits) Options {
228+
func SetLimits(limits *Limits, isAdmin bool) Options {
222229
return func(p *Permission) error {
223-
p.Limits = limits
230+
var defaults *Limits
231+
// Set the default limits for each property if not defined
232+
if isAdmin {
233+
defaults = &defaultAdminLimits
234+
} else {
235+
defaults = &defaultLimits
236+
}
237+
// Todo change
238+
p.Limits = &Limits{
239+
IPLimit: getNormalizedLimit(limits.IPLimit, defaults.IPLimit),
240+
DocsLimit: getNormalizedLimit(limits.DocsLimit, defaults.DocsLimit),
241+
SearchLimit: getNormalizedLimit(limits.SearchLimit, defaults.SearchLimit),
242+
IndicesLimit: getNormalizedLimit(limits.IndicesLimit, defaults.IndicesLimit),
243+
CatLimit: getNormalizedLimit(limits.CatLimit, defaults.CatLimit),
244+
ClustersLimit: getNormalizedLimit(limits.ClustersLimit, defaults.ClustersLimit),
245+
MiscLimit: getNormalizedLimit(limits.MiscLimit, defaults.MiscLimit),
246+
UserLimit: getNormalizedLimit(limits.UserLimit, defaults.UserLimit),
247+
PermissionLimit: getNormalizedLimit(limits.PermissionLimit, defaults.PermissionLimit),
248+
AnalyticsLimit: getNormalizedLimit(limits.AnalyticsLimit, defaults.AnalyticsLimit),
249+
RulesLimit: getNormalizedLimit(limits.RulesLimit, defaults.RulesLimit),
250+
TemplatesLimit: getNormalizedLimit(limits.TemplatesLimit, defaults.TemplatesLimit),
251+
SuggestionsLimit: getNormalizedLimit(limits.SuggestionsLimit, defaults.SuggestionsLimit),
252+
StreamsLimit: getNormalizedLimit(limits.StreamsLimit, defaults.StreamsLimit),
253+
AuthLimit: getNormalizedLimit(limits.AuthLimit, defaults.AuthLimit),
254+
FunctionsLimit: getNormalizedLimit(limits.FunctionsLimit, defaults.FunctionsLimit),
255+
ReactiveSearchLimit: getNormalizedLimit(limits.ReactiveSearchLimit, defaults.ReactiveSearchLimit),
256+
SearchRelevancyLimit: getNormalizedLimit(limits.SearchRelevancyLimit, defaults.SearchRelevancyLimit),
257+
}
224258
return nil
225259
}
226260
}

plugins/permissions/handlers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func (p *permissions) postPermission(opts ...permission.Options) http.HandlerFun
9595
permissionOptions = append(permissionOptions, permission.SetIndices(permissionBody.Indices))
9696
}
9797
if permissionBody.Limits != nil {
98-
permissionOptions = append(permissionOptions, permission.SetLimits(permissionBody.Limits))
98+
permissionOptions = append(permissionOptions, permission.SetLimits(permissionBody.Limits, *reqUser.IsAdmin))
9999
}
100100
if permissionBody.Description != "" {
101101
permissionOptions = append(permissionOptions, permission.SetDescription(permissionBody.Description))

0 commit comments

Comments
 (0)