audit logs
This commit is contained in:
@ -12,6 +12,7 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/kms/api-key-service/internal/audit"
|
||||
"github.com/kms/api-key-service/internal/config"
|
||||
"github.com/kms/api-key-service/internal/database"
|
||||
"github.com/kms/api-key-service/internal/handlers"
|
||||
@ -65,6 +66,9 @@ func main() {
|
||||
grantRepo := postgres.NewGrantedPermissionRepository(db)
|
||||
auditRepo := postgres.NewAuditRepository(db)
|
||||
|
||||
// Initialize audit logger
|
||||
auditLogger := audit.NewAuditLogger(cfg, logger, auditRepo)
|
||||
|
||||
// Initialize services
|
||||
appService := services.NewApplicationService(appRepo, auditRepo, logger)
|
||||
tokenService := services.NewTokenService(tokenRepo, appRepo, permRepo, grantRepo, cfg.GetString("INTERNAL_HMAC_KEY"), cfg, logger)
|
||||
@ -75,9 +79,10 @@ func main() {
|
||||
appHandler := handlers.NewApplicationHandler(appService, authService, logger)
|
||||
tokenHandler := handlers.NewTokenHandler(tokenService, authService, logger)
|
||||
authHandler := handlers.NewAuthHandler(authService, tokenService, cfg, logger)
|
||||
auditHandler := handlers.NewAuditHandler(auditLogger, authService, logger)
|
||||
|
||||
// Set up router
|
||||
router := setupRouter(cfg, logger, healthHandler, appHandler, tokenHandler, authHandler)
|
||||
router := setupRouter(cfg, logger, healthHandler, appHandler, tokenHandler, authHandler, auditHandler)
|
||||
|
||||
// Create HTTP server
|
||||
srv := &http.Server{
|
||||
@ -151,7 +156,7 @@ func initLogger(cfg config.ConfigProvider) *zap.Logger {
|
||||
return logger
|
||||
}
|
||||
|
||||
func setupRouter(cfg config.ConfigProvider, logger *zap.Logger, healthHandler *handlers.HealthHandler, appHandler *handlers.ApplicationHandler, tokenHandler *handlers.TokenHandler, authHandler *handlers.AuthHandler) *gin.Engine {
|
||||
func setupRouter(cfg config.ConfigProvider, logger *zap.Logger, healthHandler *handlers.HealthHandler, appHandler *handlers.ApplicationHandler, tokenHandler *handlers.TokenHandler, authHandler *handlers.AuthHandler, auditHandler *handlers.AuditHandler) *gin.Engine {
|
||||
// Set Gin mode based on environment
|
||||
if cfg.IsProduction() {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
@ -199,6 +204,11 @@ func setupRouter(cfg config.ConfigProvider, logger *zap.Logger, healthHandler *h
|
||||
protected.POST("/applications/:id/tokens", tokenHandler.Create)
|
||||
protected.DELETE("/tokens/:id", tokenHandler.Delete)
|
||||
|
||||
// Audit management
|
||||
protected.GET("/audit/events", auditHandler.ListEvents)
|
||||
protected.GET("/audit/events/:id", auditHandler.GetEvent)
|
||||
protected.GET("/audit/stats", auditHandler.GetStats)
|
||||
|
||||
// Documentation endpoint
|
||||
protected.GET("/docs", func(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
@ -223,6 +233,11 @@ func setupRouter(cfg config.ConfigProvider, logger *zap.Logger, healthHandler *h
|
||||
"POST /api/applications/:id/tokens",
|
||||
"DELETE /api/tokens/:id",
|
||||
},
|
||||
"audit": []string{
|
||||
"GET /api/audit/events",
|
||||
"GET /api/audit/events/:id",
|
||||
"GET /api/audit/stats",
|
||||
},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user