feat(login, zulip): 引入 JWT 验证并重构 API 密钥管理 #34

Merged
moyin merged 5 commits from ANGJustinl/whale-town-end:zulip_dev into main 2026-01-07 11:33:24 +08:00
Contributor

详细变更描述

  • 修复 JWT 签名冲突:重构 LoginService.generateTokenPair(),移除载荷(Payload)中的 iss (issuer) 与 aud (audience) 字段,解决签名校验失败的问题。
  • 统一验证逻辑:更新 ZulipService 以调用 LoginService.verifyToken(),消除重复的 JWT 校验代码,确保逻辑单一职责化(Single Responsibility)。
  • 修复硬编码 API 密钥问题:消息发送功能不再依赖静态配置,改为从 Redis 动态读取用户真实的 API 密钥。
  • 解耦依赖注入:在 ZulipModule 中注入 AuthModule 依赖,以支持标准的 Token 验证流程。
  • 完善技术文档:补充了关于 JWT 验证流程及 API 密钥管理逻辑的详细文档。
  • 新增测试工具:添加 test-get-messages.js 脚本,用于验证通过 WebSocket 接收消息的功能。
  • 更新自动化脚本:同步更新了 API 密钥验证及用户注册校验的快速测试脚本。
  • 端到端功能验证:确保消息发送逻辑能够正确映射并调用用户真实的 Zulip API 密钥。
### 详细变更描述 * **修复 JWT 签名冲突**:重构 `LoginService.generateTokenPair()`,移除载荷(Payload)中的 `iss` (issuer) 与 `aud` (audience) 字段,解决签名校验失败的问题。 * **统一验证逻辑**:更新 `ZulipService` 以调用 `LoginService.verifyToken()`,消除重复的 JWT 校验代码,确保逻辑单一职责化(Single Responsibility)。 * **修复硬编码 API 密钥问题**:消息发送功能不再依赖静态配置,改为从 Redis 动态读取用户真实的 API 密钥。 * **解耦依赖注入**:在 `ZulipModule` 中注入 `AuthModule` 依赖,以支持标准的 Token 验证流程。 * **完善技术文档**:补充了关于 JWT 验证流程及 API 密钥管理逻辑的详细文档。 * **新增测试工具**:添加 `test-get-messages.js` 脚本,用于验证通过 WebSocket 接收消息的功能。 * **更新自动化脚本**:同步更新了 API 密钥验证及用户注册校验的快速测试脚本。 * **端到端功能验证**:确保消息发送逻辑能够正确映射并调用用户真实的 Zulip API 密钥。
ANGJustinl added 4 commits 2026-01-06 19:07:33 +08:00
- Add ZulipAccountsEntity, repository, and module for persistent Zulip account storage
- Create ZulipAccountService in core layer for managing Zulip account lifecycle
- Integrate Zulip account creation into login flow via LoginService
- Add comprehensive test suite for Zulip account creation during user registration
- Create quick test script for validating registered user Zulip integration
- Update UsersEntity to support Zulip account associations
- Update auth module to include Zulip and ZulipAccounts dependencies
- Fix WebSocket connection protocol from ws:// to wss:// in API documentation
- Enhance LoginCoreService to coordinate Zulip account provisioning during authentication
Reviewed-on: ANGJustinl/whale-town-end#2
- 新增 @nestjs/jwt 和 jsonwebtoken 依赖包
- 实现 refreshAccessToken 方法支持令牌续期
- 添加 RefreshTokenDto 和 RefreshTokenResponseDto
- 新增 /auth/refresh-token 接口
- 完善令牌刷新的限流和超时控制
- 增加相关单元测试覆盖
- 优化错误处理和日志记录
### 详细变更描述

* **修复 JWT 签名冲突**:重构 `LoginService.generateTokenPair()`,移除载荷(Payload)中的 `iss` (issuer) 与 `aud` (audience) 字段,解决签名校验失败的问题。
* **统一验证逻辑**:更新 `ZulipService` 以调用 `LoginService.verifyToken()`,消除重复的 JWT 校验代码,确保逻辑单一职责化(Single Responsibility)。
* **修复硬编码 API 密钥问题**:消息发送功能不再依赖静态配置,改为从 Redis 动态读取用户真实的 API 密钥。
* **解耦依赖注入**:在 `ZulipModule` 中注入 `AuthModule` 依赖,以支持标准的 Token 验证流程。
* **完善技术文档**:补充了关于 JWT 验证流程及 API 密钥管理逻辑的详细文档。
* **新增测试工具**:添加 `test-get-messages.js` 脚本,用于验证通过 WebSocket 接收消息的功能。
* **更新自动化脚本**:同步更新了 API 密钥验证及用户注册校验的快速测试脚本。
* **端到端功能验证**:确保消息发送逻辑能够正确映射并调用用户真实的 Zulip API 密钥。
ANGJustinl added 1 commit 2026-01-06 19:07:40 +08:00
ANGJustinl requested review from moyin 2026-01-06 19:07:50 +08:00
moyin merged commit 179f0f66eb into main 2026-01-07 11:33:24 +08:00
moyin deleted branch zulip_dev 2026-01-07 11:33:25 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: datawhale/whale-town-end#34