This commit is contained in:
tamakyi
2026-10-19 01:11:28 +08:00
parent 84f8afe8b1
commit bd613a6f5a
15 changed files with 68 additions and 11 deletions
@@ -16,6 +16,7 @@ import (
"github.com/sirupsen/logrus"
"github.com/tamakyi/TamaBox/internal/conf"
"github.com/tamakyi/TamaBox/internal/db"
"github.com/tamakyi/TamaBox/internal/i18n"
"github.com/tamakyi/TamaBox/internal/security/censor"
)
@@ -35,6 +36,24 @@ func StrictnessFor(raw string) censor.Strictness {
return censor.ParseStrictness(conf.Security.DefaultModerationStrictness)
}
// EffectiveStrictness 返回账号**实际生效**的审核档位,是内容审核应当使用的入口。
//
// 处于处置期(L1–L4)的账号一律强制 strict,忽略账号自身设置:
// 限制期内允许保留 lax / standard,等于给了箱主一个免审通道 —— 一边被限制、
// 一边把门槛调到最低,是明显可被利用的组合。
//
// 处置查询失败时**回退账号自身设置**,而不是"失败即强制 strict":
// DB 抖动时反向兜底会让全站突然加严,正常用户的提交被大面积误拒,
// 影响面远大于「漏放一个受控账号」。
func EffectiveStrictness(ctx context.Context, userID uint, raw string) censor.Strictness {
if userID != 0 {
if level, _, err := db.Restrictions.ActiveLevel(ctx, userID); err == nil && level != "" {
return censor.StrictnessStrict
}
}
return StrictnessFor(raw)
}
// Check 执行一次内容审核,并按箱主严格度裁决是否放行。
//
// 这是提问 / 投票 / 私聊三类场景**唯一**应当使用的审核入口。