2025-05-07 14:12:53 +08:00

34 lines
774 B
Go

package middleware
import (
"context"
"net/http"
"time"
systemmodel "management/internal/erpserver/model/system"
)
func (m *middleware) Audit(next http.Handler) http.Handler {
fn := func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
defer func(res http.ResponseWriter, req *http.Request) {
// 记录审计日志
go m.writeLog(req, start)
}(w, r)
next.ServeHTTP(w, r)
}
return http.HandlerFunc(fn)
}
func (m *middleware) writeLog(req *http.Request, start time.Time) {
end := time.Now()
user := m.AuthUser(req.Context())
al := systemmodel.NewAuditLog(req, user.Email, user.OS, user.Browser, start, end)
c, cancel := context.WithTimeout(context.Background(), time.Second*3)
defer cancel()
_ = m.auditLogService.Create(c, al)
}