[开发]SoSite 邮箱验证开关更新包(2026-08-09)

👑Lv.11 元老 🌞 骨干会员
2026-10-24 00:09:53

本文由 FlintHub 开发文档归档发布。原始文档日期见标题前缀,来源:8月12日的备份/update/7/README-部署说明.md。

SoSite 邮箱验证开关更新包(2026-08-09)

本目录包含 5 个修改 的文件,按原目录结构放置。

覆盖方式:将本目录内所有文件按相同路径上传覆盖到站点根目录(如 D:/phpstudy_pro/WWW 或服务器对应路径)。

生成环境:PHP 8.2 / MySQL 5.7.26,无数据库结构变更、无 Composer 依赖变更。


一、本包功能说明

  1. 后台邮箱验证状态展示 + 手动通过:用户编辑页新增"邮箱验证"状态(已验证/未验证徽标),未验证用户可直接勾选"标记为已验证"保存,无需真实邮件验证。
  2. 邮箱验证开关:后台"基本信息 → 功能开关"新增"开启邮箱验证"勾选项——开启时新注册用户需点邮件链接验证才能登录(原行为);关闭时注册即生效、未验证用户可正常登录。默认开启(与原行为一致)。

二、覆盖前必须做的事

备份服务器现状

把服务器上以下目录整体备份一份(zip 即可):

  • app/Controllers/
  • app/Views/admin/

三、本包包含的文件清单(5 个,均为修改)

文件改动
app/Controllers/Admin/SettingsController.php基本信息设置 $keys 增加 email_verify_enabled(邮箱验证开关持久化)
app/Views/admin/settings_basic.php功能开关区块新增"开启邮箱验证"勾选项 + 说明文案
app/Controllers/AuthController.php① 注册:开关开启才生成 token 并发验证邮件,关闭则直接注册成功;② 登录:仅开关开启时拦截未验证用户
app/Views/admin/user_edit.php邮箱字段下方新增"邮箱验证"状态徽标(已验证/未验证),未验证时提供"标记为已验证"勾选项
app/Controllers/Admin/UserController.php编辑用户保存时,若勾选"标记为已验证"则调用 User::markEmailVerified() 手动通过(置 email_verified=1 并清 token)

⚠️ 本包不包含数据库结构变更(email_verified 等字段由核心 AuthController::ensureEmailVerifyColumns() 幂等自建,无需手动 ALTER)。

四、部署步骤(推荐顺序)

  1. 备份服务器 app/Controllers/、app/Views/admin/
  2. 上传本 update 包全部文件,按路径覆盖
  3. 清空模板编译缓存:protected/cache/templates/ 目录下文件(模板引擎会自动重建)
  4. 浏览器回归验证(见下)

五、回归验证清单

页面检查点
/admin/settings/basic功能开关区出现"开启邮箱验证"勾选项,默认勾选;取消勾选保存后刷新仍为未勾选
/admin/users?action=edit&id=未验证用户ID显示"未验证"徽标 + "标记为已验证"勾选项;勾选保存后该用户 email_verified=1
/admin/users?action=edit&id=已验证用户ID仅显示"已验证"徽标,无勾选项
开关关闭时新注册注册即成功,不要求验证邮箱,可正常登录
开关开启时新注册注册后提示验证邮件已发送,未验证前登录被拦截提示"请先验证邮箱地址"

注:若服务器 settings 表中已存在 email_verify_enabled 键且值为 0,保存设置前默认视为开启(get('email_verify_enabled', '1')),与原行为一致。


本包由 2026-08-09 会话生成(邮箱验证状态展示 + 手动通过 + 邮箱验证开关)。

轻量级、高性能、零 MySQL 依赖的PHP社区系统。
| 瀏覽 4 次 | 回覆 0 次

全部回覆 (0)

暫無回覆

請 登入