- handle-callback.ts: 成功时 302 redirect 首页而非返回 200 JSON - handle-login.ts: 切换账号改用 Authelia /logout 清除 session - oidc.ts: buildAuthorizeUrl 支持 maxAge 参数 - 新增 V2 认证模块 (handle-login/callback/logout, jwt-v2, jwt-edge, middleware-v2, types-v2) |
||
|---|---|---|
| lib | ||
| ui | ||
| .gitignore | ||
| CLAUDE.md | ||
| README.md | ||
| package-lock.json | ||
| package.json | ||
README.md
shared — TLYQ 共享标准库
tlyq.ai 各站点共享的标准库,消除代码重复,统一基础设施实现。
目录结构
shared/
├── lib/
│ ├── auth/ # 认证标准库
│ │ ├── config.ts # config 工厂(createAuthConfig)
│ │ ├── jwt.ts # JWT 签发/验证
│ │ ├── ldap.ts # LDAP 认证
│ │ ├── middleware.ts # middleware 工厂(createMiddleware)
│ │ ├── oidc.ts # OIDC 客户端
│ │ ├── types.ts # 类型定义
│ │ └── user-sync.ts # OIDC 用户同步
│ ├── audit/ # 审计日志标准库
│ │ ├── audit-schema.ts # 表结构常量
│ │ └── write-audit-log.ts # writeAuditLog + diffObjects + getClientIP
│ ├── wechat/ # 企业微信推送
│ │ ├── wechat-pusher.ts # WeChatPusher 类
│ │ └── message-formatter.ts # 消息格式化工具
│ ├── alert/ # 告警管理
│ │ ├── alert-manager.ts # AlertManager(去重/冷却/免打扰)
│ │ ├── health-checker.ts # HealthChecker(HTTP/Docker)
│ │ └── types.ts # 类型定义
│ └── db/ # 数据库 schema
│ └── alert-schema.ts # CREATE TABLE 常量
└── ui/ # 共享 UI 组件
└── login-page.tsx # 统一登录页
使用方式
1. 创建 symlink
ln -sf ../shared {站点目录}/shared
2. 配置 tsconfig
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"],
"@shared/*": ["./shared/*"]
}
}
}
3. 引用
import { createAuthConfig } from '@shared/lib/auth/config'
import { createMiddleware } from '@shared/lib/auth/middleware'
import { writeAuditLog } from '@shared/lib/audit/write-audit-log'
import { WeChatPusher } from '@shared/lib/wechat/wechat-pusher'
设计原则
- 零业务依赖:纯基础设施,不含站点特有逻辑
- 配置驱动:所有环境变量通过参数传入,不硬编码
- 接口稳定:包装器保持各站点原有调用方式不变
- Edge Runtime 兼容:middleware 仅用 atob,不用 Node.js crypto