mirror of
https://github.com/Awuqing/BackupX.git
synced 2026-09-04 23:16:41 +08:00
feat: add community enhancements — password reset, audit logs, multi-source backup
Three community-requested features: 1. CLI password reset: `backupx reset-password --username admin --password xxx` Docker users can run via `docker exec`. No full app init needed. 2. Audit logging: async fire-and-forget audit trail for all key operations (login, CRUD on tasks/targets/records, settings changes). New UI page at /audit with category filter and pagination. 3. Multi-source path backup: file backup tasks now support multiple source directories packed into a single tar archive. Backward compatible with existing single sourcePath field.
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"backupx/server/internal/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// recordAudit 从 gin context 中提取用户信息并记录审计日志(nil 安全)
|
||||
func recordAudit(c *gin.Context, auditService *service.AuditService, category, action, targetType, targetID, targetName, detail string) {
|
||||
if auditService == nil {
|
||||
return
|
||||
}
|
||||
username := ""
|
||||
if subject, exists := c.Get(contextUserSubjectKey); exists {
|
||||
username = fmt.Sprintf("%v", subject)
|
||||
}
|
||||
auditService.Record(service.AuditEntry{
|
||||
Username: username,
|
||||
Category: category,
|
||||
Action: action,
|
||||
TargetType: targetType,
|
||||
TargetID: targetID,
|
||||
TargetName: targetName,
|
||||
Detail: detail,
|
||||
ClientIP: c.ClientIP(),
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user