@@ -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}
0 commit comments