feat: 微信分享钩子全页面接入 + 订阅信息结构化映射 + JWT 错误处理加强

- client: 全部页面接入 onShareAppMessage/onShareTimeline 分享钩子
- client: login 页增强、profile 订阅展示优化
- client/stores: 订阅字段扁平结构映射为 subInfo(plan/expiresAt/startDate)
- server: auth 路由 JWT 无效/过期统一返回 401 未授权响应
- server: models/tests 同步更新
This commit is contained in:
Yuzhiran Dev
2026-09-04 11:47:29 +08:00
parent de8ca9c420
commit 66de1dc396
37 changed files with 2138 additions and 1830 deletions
+7 -1
View File
@@ -11,15 +11,21 @@ const Admin = require('../../src/models/Admin')
describe('Auth API', () => {
beforeAll(async () => {
// 连接测试数据库
const mongoURI = process.env.MONGODB_URI || 'mongodb://localhost:27017/wdkj'
const mongoURI = process.env.MONGODB_URI || 'mongodb://localhost:27017/wdkj_test'
if (mongoose.connection.readyState === 0) {
await mongoose.connect(mongoURI)
}
// 确保唯一索引已构建(dropDatabase 后 mongoose 不会自动重建)
await mongoose.connection.syncIndexes()
})
afterAll(async () => {
// 清理并关闭连接
if (mongoose.connection.readyState !== 0) {
// 防呆:只允许在测试库中 dropDatabase
if (mongoose.connection.name === 'wdkj') {
throw new Error('[安全] 不允许对生产数据库 wdkj 执行 dropDatabase')
}
await mongoose.connection.dropDatabase()
await mongoose.connection.close()
}