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
+22 -1
View File
@@ -10,6 +10,7 @@ import (
"strings"
"time"
audit_model "gitea.dev/models/audit"
"gitea.dev/models/db"
"gitea.dev/models/organization"
packages_model "gitea.dev/models/packages"
@@ -24,6 +25,7 @@ import (
"gitea.dev/modules/util"
"gitea.dev/services/agit"
asymkey_service "gitea.dev/services/asymkey"
"gitea.dev/services/audit"
org_service "gitea.dev/services/org"
"gitea.dev/services/packages"
container_service "gitea.dev/services/packages/container"
@@ -56,7 +58,13 @@ func RenameUser(ctx context.Context, u *user_model.User, newUserName string, doe
u.Name = oldUserName
return err
}
return repo_model.UpdateRepositoryOwnerNames(ctx, u.ID, newUserName)
if err := repo_model.UpdateRepositoryOwnerNames(ctx, u.ID, newUserName); err != nil {
return err
}
recordNameChange(ctx, u, oldUserName)
return nil
}
ctx, committer, err := db.TxContext(ctx)
@@ -114,9 +122,20 @@ func RenameUser(ctx context.Context, u *user_model.User, newUserName string, doe
}
return err
}
recordNameChange(ctx, u, oldUserName)
return nil
}
func recordNameChange(ctx context.Context, u *user_model.User, oldUserName string) {
if u.IsOrganization() {
audit.Record(ctx, audit_model.OrganizationName, u, "previous_name", oldUserName)
} else {
audit.Record(ctx, audit_model.UserName, u, "previous_name", oldUserName)
}
}
// DeleteUser completely and permanently deletes everything of a user,
// but issues/comments/pulls will be kept and shown as someone has been deleted,
// unless the user is younger than USER_DELETE_WITH_COMMENTS_MAX_DAYS.
@@ -270,6 +289,8 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) error {
}
}
audit.Record(ctx, audit_model.UserDelete, u)
return nil
}