feat: Add audit logging (#38189)

Co-authored-by: bircni <bircni@users.noreply.github.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
bircni
2026-09-12 10:15:23 +02:00
committed by GitHub
parent 4d43445532
commit da37b7916b
136 changed files with 3864 additions and 209 deletions
+10 -1
View File
@@ -7,6 +7,7 @@ import (
"net/http"
"strings"
audit_model "gitea.dev/models/audit"
auth_model "gitea.dev/models/auth"
"gitea.dev/models/perm"
"gitea.dev/models/unit"
@@ -33,6 +34,7 @@ import (
"gitea.dev/routers/web/healthcheck"
"gitea.dev/routers/web/misc"
"gitea.dev/routers/web/org"
org_setting "gitea.dev/routers/web/org/setting"
"gitea.dev/routers/web/repo"
"gitea.dev/routers/web/repo/actions"
repo_setting "gitea.dev/routers/web/repo/setting"
@@ -305,7 +307,7 @@ func Routes() *web.Router {
routes.Get("/ssh_info", misc.SSHInfo)
routes.Get("/api/healthz", healthcheck.Check)
mid = append(mid, common.MustInitSessioner(), context.Contexter())
mid = append(mid, common.MustInitSessioner(), context.Contexter(), common.AuditOrigin(audit_model.OriginUI))
// Get user from session if logged in.
webAuth := newWebAuthMiddleware()
@@ -748,6 +750,8 @@ func registerWebRoutes(m *web.Router, webAuth *AuthMiddleware) {
addWebhookEditRoutes()
}, webhooksEnabled)
m.Get("/audit_logs", user_setting.ViewAuditLogs)
m.Group("/blocked_users", func() {
m.Get("", user_setting.BlockedUsers)
m.Post("", web.Bind[*forms.BlockUserForm](), user_setting.BlockedUsersPost)
@@ -795,6 +799,8 @@ func registerWebRoutes(m *web.Router, webAuth *AuthMiddleware) {
})
m.Group("/monitor", func() {
m.Get("/audit_logs", admin.ViewAuditLogs)
m.Get("/audit_logs/export", admin.ExportAuditLogs)
m.Get("/stats", admin.MonitorStats)
m.Get("/cron", admin.CronTasks)
m.Get("/perftrace", admin.PerfTrace)
@@ -1056,6 +1062,8 @@ func registerWebRoutes(m *web.Router, webAuth *AuthMiddleware) {
addSettingsScopedWorkflowsRoutes()
}, actions.MustEnableActions)
m.Get("/audit_logs", org_setting.ViewAuditLogs)
m.Post("/rename", web.Bind[*forms.RenameOrgForm](), org.SettingsRenamePost)
m.Post("/delete", org.SettingsDeleteOrgPost)
m.Post("/visibility", org.SettingsChangeVisibilityPost)
@@ -1267,6 +1275,7 @@ func registerWebRoutes(m *web.Router, webAuth *AuthMiddleware) {
m.Post("/token_permissions", repo_setting.UpdateTokenPermissions)
})
}, actions.MustEnableActions)
m.Get("/audit_logs", repo_setting.ViewAuditLogs)
// the follow handler must be under "settings", otherwise this incomplete repo can't be accessed
m.Group("/migrate", func() {
m.Post("/retry", repo.MigrateRetryPost)