XIUNOX 更新日志 2026-09-12 [复制链接]

管理员组

[API 封禁] 补齐封禁检查缺口

  • bootstrap 全局 browse 场景检查ban_type=2/3 持 token 禁用全部 API(管理员组豁免)。

  • auth.php login:密码验证后补 checkBanByScene(login)(对齐 Web route/user.php)。

  • refresh 分支:续期前拦截封禁用户(ApiAuthService::refreshTokens 返回值新增 uid)。

  • post.php / thread.php:回帖/编辑、发帖/编辑主题补 checkBanByScene(post)(含禁言)。

  • user.php PUT 改密:补 checkBanByScene(password) 检查(锁定用户不能改密,对齐 Web)。

  • bootstrap 新增 api_check_ban_scene() 辅助函数。


[安全] 修复 API refresh token 并发刷新竞态

  • refreshTokens() 的 used 标记改为原子条件更新,并发请求仅首个成功签发新 token 对。

  • 竞态败者仅本次 401、不撤销整链(合法多标签页双发不误伤),时序重用仍走既有整链撤销。


[积分防刷] 修复收藏积分并发重复发放

  • route/thread.php 收藏分支积分改以数据层操作真实生效为门控(对齐点赞分支范式):

    • favorite/be_favoritedthread_favorite_create() 返回 1(真新增)。

    • unfavoritethread_favorite_delete() 返回受影响行数 > 0(真删除)。

  • 并发双击/取消收藏的败者请求不再发分扣分。


[xnx_quest] 1.4.32 → 1.4.35

1.4.32

  • 后台审核页翻页修复:pagination()<li>ul.pagination 外壳致页码竖排无样式。

  • 空筛选条件时 count() 走 information_schema 估算值致分页页数错/消失,getApplications/getLogs 空条件改恒真条件强制精确计数。

  • submitCustomApplication 入库失败补 xn_log 诊断。

1.4.33

  • 自定义任务被拒后重置步骤进度:reviewApplication 拒绝分支清 xnx_quest_step_progress(此前旧证据保留致卡片无表单可改、"提交审核"只能原样重交同一内容)。

  • 审核历史 evidence_json 快照不受影响,重交间隔仍由 checkResubmitIntervalreview_date 把关。

1.4.34

  • 被拒后重交等待提示:任务卡片间隔内显示"被拒绝 + 距重新提交还需约 N 小时"双 chip,步骤表单同步锁定;间隔过后自动恢复可编辑。

  • 新增 lang 键 quest_resubmit_wait(三语言同步)。

1.4.35 自定义任务卡片 UI 四项改造:

  • 步骤区改横排 flex-wrap(CSS .xq-steps row+wrap,步骤卡 flex:1 1 240px,移动端单列)。

  • visit_url 步骤不再展示原始 URL,改为"复制链接"按钮(复制即标记已访问),完成态快照同样保留复制按钮。

  • 人工审核/自定义 badge 从标题行移到奖励 badge 之后。

  • 重交等待期内步骤提交控件与"提交审核"按钮置灰,拒绝原因+N 小时提示移到提交审核按钮下方。

  • 新增 lang 键 quest_step_copy_url_btn(三语言)。


[布局] 后台关闭左侧导航时的前台栅格调整

  • 后台关闭左侧导航(sidebar_nav_enable=0)时前台三栏布局左栏不再占栅格位,中栏自动扩宽占满剩余空间(右栏存在时 xl 占 9 栅格,否则占满 12)。

  • 同步修复 leostudio_theme_blue 主题 overwrite 布局(1.2.2)。


[布局] 帖子详情页左侧操作栏栅格 2→1 列

  • layout_three_column 新增 $col_left 参数默认 2,中栏自动补位到 col-xl-8

  • .thread-sidebar-btn 移除 margin-left:90px 改为窄列内居中。

  • static_version1.4.249leostudio_theme_blue overwrite 同步(1.2.2)。


[插件] xnx_read 1.0.1

  • 修复沉浸阅读模式失效:thread 中栏改 col-xl-8 后插件写死的 .col-xl-7 选择器失配,改用 nth-last-child(2) 结构定位 + flex-grow 自动填满,不再依赖具体栅格值。


[钩子] sidebar_right 用户卡片子区域新增 5 个注入点

  • 登录态:index_site_brief_user_after / signature_after / user_nav_after

  • 未登录态:guest_brief_after / guest_stats_after

  • xnx_hook_helper 1.1.3 锚点文件已再生成。

最新回复
  • xiunox 一级用户组

    几点补充,供参考:

    1. 封禁检查目前分散在 login/refresh/post/user 各分支,建议后续把 checkBanByScene 收敛到 API 路由分发层统一前置,避免新增接口再次漏检。

    2. 收藏积分以 affected rows 为门控的思路很好,但注意 favoritebe_favorited 两次发分若非同一事务,仍可能部分成功,建议评估是否需包一层事务。

    3. 插件栅格失配这次改用结构定位是对的,但治本还是别让主题/插件依赖具体 .col-xl-N;可考虑用 CSS 变量暴露中栏宽度。

    4. 新增的 5 个用户卡片钩子建议同步补参数说明,方便主题作者接入。【 AI 自动回复,仅供参考】

    1天前

请先登录后再回复 登录