Compare commits

...

2 Commits

Author SHA1 Message Date
Stavros
fc1d4f2082 refactor: use better ignore paths in context middleware (#743) 2026-04-01 17:07:14 +03:00
Stavros
08e6b84615 fix: use int for status in healthcheck cmd 2026-04-01 16:12:11 +03:00
3 changed files with 32 additions and 8 deletions

View File

@@ -14,7 +14,7 @@ import (
) )
type healthzResponse struct { type healthzResponse struct {
Status string `json:"status"` Status int `json:"status"`
Message string `json:"message"` Message string `json:"message"`
} }

View File

@@ -1,7 +1,6 @@
package middleware package middleware
import ( import (
"slices"
"strings" "strings"
"time" "time"
@@ -13,7 +12,24 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
var OIDCIgnorePaths = []string{"/api/oidc/token", "/api/oidc/userinfo"} // Gin won't let us set a middleware on a specific route (at least it doesn't work,
// see https://github.com/gin-gonic/gin/issues/531) so we have to do some hackery
var (
contextSkipPathsPrefix = []string{
"GET /api/context/app",
"GET /api/healthz",
"HEAD /api/healthz",
"GET /api/oauth/url",
"GET /api/oauth/callback",
"GET /api/oidc/clients",
"POST /api/oidc/token",
"GET /api/oidc/userinfo",
"GET /resources",
"POST /api/user/login",
"GET /.well-known/openid-configuration",
"GET /.well-known/jwks.json",
}
)
type ContextMiddlewareConfig struct { type ContextMiddlewareConfig struct {
CookieDomain string CookieDomain string
@@ -39,9 +55,7 @@ func (m *ContextMiddleware) Init() error {
func (m *ContextMiddleware) Middleware() gin.HandlerFunc { func (m *ContextMiddleware) Middleware() gin.HandlerFunc {
return func(c *gin.Context) { return func(c *gin.Context) {
// There is no point in trying to get credentials if it's an OIDC endpoint if m.isIgnorePath(c.Request.Method + " " + c.Request.URL.Path) {
path := c.Request.URL.Path
if slices.Contains(OIDCIgnorePaths, strings.TrimSuffix(path, "/")) {
c.Next() c.Next()
return return
} }
@@ -224,3 +238,12 @@ func (m *ContextMiddleware) Middleware() gin.HandlerFunc {
c.Next() c.Next()
} }
} }
func (m *ContextMiddleware) isIgnorePath(path string) bool {
for _, prefix := range contextSkipPathsPrefix {
if strings.HasPrefix(path, prefix) {
return true
}
}
return false
}

View File

@@ -8,10 +8,11 @@ import (
"github.com/steveiliop56/tinyauth/internal/utils/tlog" "github.com/steveiliop56/tinyauth/internal/utils/tlog"
) )
// See context middleware for explanation of why we have to do this
var ( var (
loggerSkipPathsPrefix = []string{ loggerSkipPathsPrefix = []string{
"GET /api/health", "GET /api/healthz",
"HEAD /api/health", "HEAD /api/healthz",
"GET /favicon.ico", "GET /favicon.ico",
} }
) )