修改middleware包

This commit is contained in:
2025-11-05 18:38:41 +08:00
parent ef4ca397ce
commit 3e2f9e7210
4 changed files with 27 additions and 16 deletions

View File

@@ -1,16 +1,21 @@
package middleware
import (
"context"
"git.huangwc.com/pig/pig-farm-controller/internal/domain/audit"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
"github.com/labstack/echo/v4"
)
// AuditLogMiddleware 创建一个Echo中间件用于在请求结束后记录用户操作审计日志。
// 它依赖于控制器通过调用 SendSuccessWithAudit 或 SendErrorWithAudit 在上下文中设置的审计信息。
func AuditLogMiddleware(auditService audit.Service) echo.MiddlewareFunc {
func AuditLogMiddleware(ctx context.Context, auditService audit.Service) echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
newCtx := logs.AddFuncName(ctx, c.Request().Context(), "AuditLogMiddleware")
// 首先执行请求链中的后续处理程序(即业务控制器)
err := next(c)
@@ -44,6 +49,7 @@ func AuditLogMiddleware(auditService audit.Service) echo.MiddlewareFunc {
// 调用审计服务记录日志(异步)
auditService.LogAction(
newCtx,
user,
reqCtx,
actionType,

View File

@@ -2,12 +2,14 @@
package middleware
import (
"context"
"errors"
"net/http"
"strings"
"git.huangwc.com/pig/pig-farm-controller/internal/app/controller"
"git.huangwc.com/pig/pig-farm-controller/internal/domain/token"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/repository"
"github.com/labstack/echo/v4"
@@ -16,9 +18,11 @@ import (
// AuthMiddleware 创建一个Echo中间件用于JWT身份验证
// 它依赖于 TokenService 来解析和验证 token并使用 UserRepository 来获取完整的用户信息
func AuthMiddleware(tokenService token.Service, userRepo repository.UserRepository) echo.MiddlewareFunc {
func AuthMiddleware(ctx context.Context, tokenService token.Service, userRepo repository.UserRepository) echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
reqCtx := logs.AddFuncName(ctx, c.Request().Context(), "AuthMiddleware")
// 从 Authorization header 获取 token
authHeader := c.Request().Header.Get("Authorization")
if authHeader == "" {
@@ -40,7 +44,7 @@ func AuthMiddleware(tokenService token.Service, userRepo repository.UserReposito
}
// 根据 token 中的用户ID从数据库中获取完整的用户信息
user, err := userRepo.FindByID(claims.UserID)
user, err := userRepo.FindByID(reqCtx, claims.UserID)
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
// Token有效但对应的用户已不存在