Add role ratelimit (#1)

* Add ratelimit configuration.
* Add rate limiting :party:
This commit is contained in:
2023-10-09 17:37:54 +01:00
parent 743eed7f71
commit ac44056a00
12 changed files with 185 additions and 17 deletions
+22 -7
View File
@@ -8,7 +8,7 @@ import (
libpack_monitoring "github.com/telegram-bot-app/libpack/monitoring"
)
func extractClaimsFromJWTHeader(authorization string) (usr string) {
func extractClaimsFromJWTHeader(authorization string) (usr string, role string) {
tokenParts := strings.Split(authorization, ".")
if len(tokenParts) != 3 {
cfg.Monitoring.Increment(libpack_monitoring.MetricsFailed, nil)
@@ -28,11 +28,26 @@ func extractClaimsFromJWTHeader(authorization string) (usr string) {
cfg.Logger.Error("Can't unmarshal the claim", map[string]interface{}{"token": authorization})
return
}
usr, ok := ask.For(claimMap, cfg.Client.JWTUserClaimPath).String("-")
if !ok {
cfg.Monitoring.Increment(libpack_monitoring.MetricsFailed, nil)
cfg.Logger.Error("Can't find the user id", map[string]interface{}{"claim_map": claimMap, "path": cfg.Client.JWTUserClaimPath})
return
if len(cfg.Client.JWTUserClaimPath) > 0 {
var ok bool
usr, ok = ask.For(claimMap, cfg.Client.JWTUserClaimPath).String("-")
if !ok {
cfg.Monitoring.Increment(libpack_monitoring.MetricsFailed, nil)
cfg.Logger.Error("Can't find the user id", map[string]interface{}{"claim_map": claimMap, "path": cfg.Client.JWTUserClaimPath})
return
}
}
return usr
if len(cfg.Client.JWTRoleClaimPath) > 0 {
var ok bool
role, ok = ask.For(claimMap, cfg.Client.JWTRoleClaimPath).String("-")
if !ok {
cfg.Monitoring.Increment(libpack_monitoring.MetricsFailed, nil)
cfg.Logger.Error("Can't find the role", map[string]interface{}{"claim_map": claimMap, "path": cfg.Client.JWTRoleClaimPath})
return
}
}
return
}