feat: add audit service and request context middleware

This commit is contained in:
2026-05-26 16:14:20 +02:00
parent 51bfc9d2af
commit dfe3c6b7d8
4 changed files with 198 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
package audit
import (
"net"
"strings"
"github.com/gin-gonic/gin"
"mal/internal/auditctx"
)
func ContextMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
ip := clientIP(c.ClientIP())
userAgent := strings.TrimSpace(c.GetHeader("User-Agent"))
c.Request = c.Request.WithContext(auditctx.WithRequestInfo(c.Request.Context(), ip, userAgent))
c.Next()
}
}
func clientIP(ip string) string {
trimmed := strings.TrimSpace(ip)
if trimmed == "" {
return ""
}
parsed := net.ParseIP(trimmed)
if parsed == nil {
return trimmed
}
return parsed.String()
}