初步实现审计
This commit is contained in:
@@ -20,6 +20,7 @@ import (
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/app/controller/plan"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/app/controller/user"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/app/middleware"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/app/service/audit"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/app/service/task"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/app/service/token"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/app/service/transport"
|
||||
@@ -38,6 +39,7 @@ type API struct {
|
||||
logger *logs.Logger // 日志记录器,用于输出日志信息
|
||||
userRepo repository.UserRepository // 用户数据仓库接口,用于用户数据操作
|
||||
tokenService token.TokenService // Token 服务接口,用于 JWT token 的生成和解析
|
||||
auditService audit.Service // 审计服务,用于记录用户操作
|
||||
httpServer *http.Server // 标准库的 HTTP 服务器实例,用于启动和停止服务
|
||||
config config.ServerConfig // API 服务器的配置,使用 infra/config 包中的 ServerConfig
|
||||
userController *user.Controller // 用户控制器实例
|
||||
@@ -55,6 +57,7 @@ func NewAPI(cfg config.ServerConfig,
|
||||
deviceRepository repository.DeviceRepository,
|
||||
planRepository repository.PlanRepository,
|
||||
tokenService token.TokenService,
|
||||
auditService audit.Service, // 注入审计服务
|
||||
listenHandler transport.ListenHandler,
|
||||
analysisTaskManager *task.AnalysisPlanTaskManager) *API {
|
||||
// 设置 Gin 模式,例如 gin.ReleaseMode (生产模式) 或 gin.DebugMode (开发模式)
|
||||
@@ -75,6 +78,7 @@ func NewAPI(cfg config.ServerConfig,
|
||||
logger: logger,
|
||||
userRepo: userRepo,
|
||||
tokenService: tokenService,
|
||||
auditService: auditService,
|
||||
config: cfg,
|
||||
listenHandler: listenHandler,
|
||||
// 在 NewAPI 中初始化用户控制器,并将其作为 API 结构体的成员
|
||||
@@ -133,7 +137,8 @@ func (a *API) setupRoutes() {
|
||||
// --- Authenticated Routes ---
|
||||
// 所有在此注册的路由都需要通过 JWT 身份验证
|
||||
authGroup := a.engine.Group("/api/v1")
|
||||
authGroup.Use(middleware.AuthMiddleware(a.tokenService))
|
||||
authGroup.Use(middleware.AuthMiddleware(a.tokenService, a.userRepo)) // 1. 身份认证
|
||||
authGroup.Use(middleware.AuditLogMiddleware(a.auditService)) // 2. 审计日志
|
||||
{
|
||||
// 设备相关路由组
|
||||
deviceGroup := authGroup.Group("/devices")
|
||||
@@ -144,7 +149,7 @@ func (a *API) setupRoutes() {
|
||||
deviceGroup.PUT("/:id", a.deviceController.UpdateDevice)
|
||||
deviceGroup.DELETE("/:id", a.deviceController.DeleteDevice)
|
||||
}
|
||||
a.logger.Info("设备相关接口注册成功 (需要认证)")
|
||||
a.logger.Info("设备相关接口注册成功 (需要认证和审计)")
|
||||
|
||||
// 计划相关路由组
|
||||
planGroup := authGroup.Group("/plans")
|
||||
@@ -157,7 +162,7 @@ func (a *API) setupRoutes() {
|
||||
planGroup.POST("/:id/start", a.planController.StartPlan)
|
||||
planGroup.POST("/:id/stop", a.planController.StopPlan)
|
||||
}
|
||||
a.logger.Info("计划相关接口注册成功 (需要认证)")
|
||||
a.logger.Info("计划相关接口注册成功 (需要认证和审计)")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user