feat(backend): filter sensitive fields for non-admin users in account list API

This commit is contained in:
pycook
2025-08-05 22:57:02 +08:00
parent b4e1dd2b04
commit 3413c38808

View File

@@ -7,6 +7,7 @@ import (
"github.com/samber/lo"
"github.com/spf13/cast"
"github.com/veops/oneterm/internal/acl"
"github.com/veops/oneterm/internal/model"
"github.com/veops/oneterm/internal/service"
"github.com/veops/oneterm/pkg/config"
@@ -41,6 +42,20 @@ var (
func(ctx *gin.Context, data []*model.Account) {
accountService.DecryptSensitiveData(data)
},
// Filter sensitive fields for non-admin users
func(ctx *gin.Context, data []*model.Account) {
info := cast.ToBool(ctx.Query("info"))
if !info {
currentUser, _ := acl.GetSessionFromCtx(ctx)
if !acl.IsAdmin(currentUser) {
for _, account := range data {
account.Password = ""
account.Pk = ""
account.Phrase = ""
}
}
}
},
}
accountDcs = []deleteCheck{