fix v12
This commit is contained in:
@@ -25,6 +25,14 @@ func UpdateModerationStrictness(ctx context.Context, f form.UpdateModerationStri
|
||||
return
|
||||
}
|
||||
|
||||
// 处置期内禁止修改档位:EffectiveStrictness 会强制 strict,允许保存只会让箱主
|
||||
// 以为「我调成宽松了」,实际审核仍按严格执行,是更糟的误导。
|
||||
if level, _, err := db.Restrictions.ActiveLevel(ctx.Request().Context(), ctx.User.ID); err == nil && level != "" {
|
||||
ctx.SetErrorFlash(i18n.T(ctx.Lang(), "admin.flash.strictnessLocked"))
|
||||
ctx.Redirect(returnTab(ctx))
|
||||
return
|
||||
}
|
||||
|
||||
// 非法取值一律拒绝保存:宁可保留原档位,也不要写入一个解释不了的中间状态。
|
||||
if !censor.IsValidStrictness(f.Strictness) {
|
||||
ctx.SetErrorFlash(i18n.T(ctx.Lang(), "admin.flash.moderationStrictnessInvalid"))
|
||||
|
||||
@@ -33,6 +33,11 @@ func Profile(ctx context.Context) {
|
||||
ctx.Data["HasPagePassword"] = ctx.User.PagePassword != ""
|
||||
ctx.Data["HasAskPassword"] = ctx.User.AskPassword != ""
|
||||
ctx.Data["ActiveProfileTab"] = ProfileTab(ctx.Query("tab"))
|
||||
// 处置期内审核严格度被强制为最高档且不可修改(见 moderation.EffectiveStrictness),
|
||||
// 设置页需要把下拉和保存按钮禁用,否则箱主会以为自己的修改生效了。
|
||||
if level, _, err := db.Restrictions.ActiveLevel(ctx.Request().Context(), ctx.User.ID); err == nil && level != "" {
|
||||
ctx.Data["StrictnessLocked"] = true
|
||||
}
|
||||
ctx.Data["TagLimits"] = tagLimits()
|
||||
ctx.Data["ChatLimits"] = chatLimits()
|
||||
InjectFeatureViews(ctx)
|
||||
|
||||
+3
-3
@@ -59,7 +59,7 @@ type voteForm struct {
|
||||
// censorCheck 对单段文本做内容审核。与提问 / 私聊共用 moderation.Check 守卫,
|
||||
// 是否拦截由发起人的「审核严格度」档位决定;fail-closed,服务异常时拒绝发布。
|
||||
func censorCheck(ctx context.Context, text string) error {
|
||||
_, err := moderation.Check(ctx.Request().Context(), moderation.StrictnessFor(ctx.User.ModerationStrictness), ctx.Lang(), text)
|
||||
_, err := moderation.Check(ctx.Request().Context(), moderation.EffectiveStrictness(ctx.Request().Context(), ctx.User.ID, ctx.User.ModerationStrictness), ctx.Lang(), text)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ func parseVoteMeta(ctx context.Context, draft bool) (*voteForm, error) {
|
||||
// 内容审核(fail-closed):非草稿执行;草稿跳过(见上说明)
|
||||
var censorMeta datatypes.JSON
|
||||
if !draft {
|
||||
titleCensor, err := moderation.Check(ctx.Request().Context(), moderation.StrictnessFor(ctx.User.ModerationStrictness), ctx.Lang(), title)
|
||||
titleCensor, err := moderation.Check(ctx.Request().Context(), moderation.EffectiveStrictness(ctx.Request().Context(), ctx.User.ID, ctx.User.ModerationStrictness), ctx.Lang(), title)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -974,7 +974,7 @@ func voteOwnerStrictness(ctx context.Context, ownerID uint) censor.Strictness {
|
||||
Error("Failed to get vote owner for moderation strictness")
|
||||
return censor.StrictnessStrict
|
||||
}
|
||||
return moderation.StrictnessFor(owner.ModerationStrictness)
|
||||
return moderation.EffectiveStrictness(ctx.Request().Context(), ownerID, owner.ModerationStrictness)
|
||||
}
|
||||
|
||||
// censorVoteForPublish 发布前对投票全部可见文本做内容审核(fail-closed)。
|
||||
|
||||
Reference in New Issue
Block a user