本文由 FlintHub 开发文档归档发布。原始文档日期见标题前缀,来源:8月12日的备份/update/7/README-部署说明.md。
SoSite 邮箱验证开关更新包(2026-08-09)
本目录包含 5 个修改 的文件,按原目录结构放置。
覆盖方式:将本目录内所有文件按相同路径上传覆盖到站点根目录(如 D:/phpstudy_pro/WWW 或服务器对应路径)。
生成环境:PHP 8.2 / MySQL 5.7.26,无数据库结构变更、无 Composer 依赖变更。
一、本包功能说明
- 后台邮箱验证状态展示 + 手动通过:用户编辑页新增"邮箱验证"状态(已验证/未验证徽标),未验证用户可直接勾选"标记为已验证"保存,无需真实邮件验证。
- 邮箱验证开关:后台"基本信息 → 功能开关"新增"开启邮箱验证"勾选项——开启时新注册用户需点邮件链接验证才能登录(原行为);关闭时注册即生效、未验证用户可正常登录。默认开启(与原行为一致)。
二、覆盖前必须做的事
备份服务器现状
把服务器上以下目录整体备份一份(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)。
四、部署步骤(推荐顺序)
- 备份服务器
app/Controllers/、app/Views/admin/ - 上传本 update 包全部文件,按路径覆盖
- 清空模板编译缓存:
protected/cache/templates/目录下文件(模板引擎会自动重建) - 浏览器回归验证(见下)
五、回归验证清单
| 页面 | 检查点 |
|---|---|
/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 会话生成(邮箱验证状态展示 + 手动通过 + 邮箱验证开关)。