feat: 添加日志管理和敏感词过滤功能
- 新增日志管理模块:操作日志、登录日志、数据变更日志 - 新增敏感词过滤器 (sanitizer) - 新增日志异步写入管理器 - 新增日志定时清理服务 - 优化帖子相关服务和上传服务
This commit is contained in:
@@ -31,6 +31,8 @@ type Router struct {
|
||||
adminCommentHandler *handler.AdminCommentHandler
|
||||
adminGroupHandler *handler.AdminGroupHandler
|
||||
adminDashboardHandler *handler.AdminDashboardHandler
|
||||
adminLogHandler *handler.AdminLogHandler
|
||||
logService *service.LogService
|
||||
jwtService *service.JWTService
|
||||
casbinService service.CasbinService
|
||||
}
|
||||
@@ -57,6 +59,8 @@ func New(
|
||||
adminCommentHandler *handler.AdminCommentHandler,
|
||||
adminGroupHandler *handler.AdminGroupHandler,
|
||||
adminDashboardHandler *handler.AdminDashboardHandler,
|
||||
adminLogHandler *handler.AdminLogHandler,
|
||||
logService *service.LogService,
|
||||
activityService service.UserActivityService,
|
||||
casbinService service.CasbinService,
|
||||
) *Router {
|
||||
@@ -86,6 +90,8 @@ func New(
|
||||
adminCommentHandler: adminCommentHandler,
|
||||
adminGroupHandler: adminGroupHandler,
|
||||
adminDashboardHandler: adminDashboardHandler,
|
||||
adminLogHandler: adminLogHandler,
|
||||
logService: logService,
|
||||
jwtService: jwtService,
|
||||
casbinService: casbinService,
|
||||
}
|
||||
@@ -104,6 +110,7 @@ func (r *Router) setupRoutes() {
|
||||
c.JSON(200, gin.H{"status": "ok"})
|
||||
})
|
||||
|
||||
|
||||
// API v1
|
||||
v1 := r.engine.Group("/api/v1")
|
||||
{
|
||||
@@ -115,11 +122,32 @@ func (r *Router) setupRoutes() {
|
||||
auth.POST("/login", r.userHandler.Login)
|
||||
auth.POST("/password/send-code", r.userHandler.SendPasswordResetCode)
|
||||
auth.POST("/password/reset", r.userHandler.ResetPassword)
|
||||
auth.POST("/logout", r.userHandler.Logout)
|
||||
auth.POST("/refresh", r.userHandler.RefreshToken)
|
||||
}
|
||||
|
||||
// 需要认证的路由
|
||||
authMiddleware := middleware.Auth(r.jwtService)
|
||||
|
||||
// === 访问日志中间件 ===
|
||||
if r.adminLogHandler != nil && r.logService != nil {
|
||||
accessLogConfig := &middleware.AccessLogConfig{
|
||||
Enable: true,
|
||||
SkipPaths: []string{"/health", "/api/v1/health"},
|
||||
ServerIP: "0.0.0.0",
|
||||
ServerPort: 8080,
|
||||
}
|
||||
r.engine.Use(middleware.AccessLogMiddleware(
|
||||
r.logService.OperationLog,
|
||||
accessLogConfig,
|
||||
))
|
||||
}
|
||||
r.engine.Use(middleware.AccessLogMiddleware(
|
||||
r.logService,
|
||||
accessLogConfig,
|
||||
))
|
||||
}
|
||||
|
||||
// Casbin 权限中间件(暂不全局启用,可根据需要在特定路由组上使用)
|
||||
// casbinMiddleware := middleware.CasbinAuth(r.casbinService)
|
||||
|
||||
@@ -435,10 +463,21 @@ func (r *Router) setupRoutes() {
|
||||
admin.GET("/dashboard/pending-content", r.adminDashboardHandler.GetPendingContent)
|
||||
admin.GET("/dashboard/online-users", r.adminDashboardHandler.GetOnlineUsers)
|
||||
}
|
||||
|
||||
// 日志管理
|
||||
if r.adminLogHandler != nil {
|
||||
logs := admin.Group("/logs")
|
||||
{
|
||||
logs.GET("/operations", r.adminLogHandler.GetOperationLogs)
|
||||
logs.GET("/logins", r.adminLogHandler.GetLoginLogs)
|
||||
logs.GET("/data-changes", r.adminLogHandler.GetDataChangeLogs)
|
||||
logs.GET("/statistics", r.adminLogHandler.GetLogStatistics)
|
||||
logs.GET("/export", r.adminLogHandler.ExportLogs)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Engine 获取引擎
|
||||
func (r *Router) Engine() *gin.Engine {
|
||||
|
||||
Reference in New Issue
Block a user