From 327d2cddb33d5402a1d81e0c13fc835ef27900c1 Mon Sep 17 00:00:00 2001 From: orenzhang <41963680+OrenZhang@users.noreply.github.com> Date: Wed, 13 May 2026 20:18:09 +0800 Subject: [PATCH 1/2] refactor(middlewares): enhance logging format in LoginRequired middleware --- internal/apps/oauth/middlewares.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/apps/oauth/middlewares.go b/internal/apps/oauth/middlewares.go index c8cc40d4..8fd91992 100644 --- a/internal/apps/oauth/middlewares.go +++ b/internal/apps/oauth/middlewares.go @@ -50,7 +50,7 @@ func LoginRequired() gin.HandlerFunc { } // log - logger.InfoF(ctx, "[LoginRequired] %d %s", user.ID, user.Username) + logger.InfoF(ctx, "[LoginRequired] %s %d %s", c.ClientIP(), user.ID, user.Username) // set user info util.SetToContext(c, UserObjKey, &user) From 0ebd89df93cfa43b8874b3eec0ea27c890a53714 Mon Sep 17 00:00:00 2001 From: orenzhang <41963680+OrenZhang@users.noreply.github.com> Date: Wed, 13 May 2026 20:47:53 +0800 Subject: [PATCH 2/2] refactor(middlewares): improve audit logging in LoginRequired middleware --- internal/apps/oauth/middlewares.go | 31 ++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/internal/apps/oauth/middlewares.go b/internal/apps/oauth/middlewares.go index 8fd91992..e510e6a6 100644 --- a/internal/apps/oauth/middlewares.go +++ b/internal/apps/oauth/middlewares.go @@ -17,6 +17,7 @@ limitations under the License. package oauth import ( + "encoding/json" "net/http" "github.com/gin-gonic/gin" @@ -28,6 +29,17 @@ import ( "github.com/linux-do/credit/internal/util" ) +type loginRequiredAuditLog struct { + UserID uint64 `json:"user_id"` + Username string `json:"username"` + ClientIP string `json:"client_ip"` + Method string `json:"method"` + Path string `json:"path"` + RequestURI string `json:"request_uri"` + UserAgent string `json:"user_agent"` + Referer string `json:"referer"` +} + func LoginRequired() gin.HandlerFunc { return func(c *gin.Context) { // init trace @@ -49,8 +61,23 @@ func LoginRequired() gin.HandlerFunc { return } - // log - logger.InfoF(ctx, "[LoginRequired] %s %d %s", c.ClientIP(), user.ID, user.Username) + auditLog := loginRequiredAuditLog{ + UserID: user.ID, + Username: user.Username, + ClientIP: c.ClientIP(), + Method: c.Request.Method, + Path: c.Request.URL.Path, + RequestURI: c.Request.RequestURI, + UserAgent: c.Request.UserAgent(), + Referer: c.Request.Referer(), + } + auditJSON, err := json.Marshal(auditLog) + if err != nil { + logger.ErrorF(ctx, "[LoginRequiredAudit] marshal failed: %v", err) + logger.InfoF(ctx, "[LoginRequiredAudit] %s %d %s", c.ClientIP(), user.ID, user.Username) + } else { + logger.InfoF(ctx, "[LoginRequiredAudit] %s", auditJSON) + } // set user info util.SetToContext(c, UserObjKey, &user)