6.6 KiB
6.6 KiB
变更日志
2026-05-14
- [新增] 管理员权限接入 LLDAP
lldap_admin组:isLldapAdmin()通过 LDAP 查询组成员决定管理权限,不再硬编码username === 'admin';将用户加入该组即可获得 OA 管理权限 - [优化]
/api/auth/me响应增加isAdmin字段,前端复用判断权限 - [修复] 部署后 Cloudflare 缓存旧 HTML 引用已删除 chunk 导致 Application Error:middleware + nginx 双层
Cache-Control: no-cache防缓存,部署脚本docker compose restart确保容器重启 - [修复] deploy-ai.sh 对无 Dockerfile 站点(OA)容器不重启,Next.js 进程仍使用旧
.next:docker compose up -d后追加docker compose restart - [新增]
nginx-proxy-ai/conf.d/oa-ai.conf纳入版本控制,新服务器可直接部署 - [优化] 统一顶栏 Header 组件:提取
Header.tsx(服务端)+HeaderUI.tsx(客户端复用),三处页面(首页/用户管理/个人信息)共用同一顶栏,退出按钮、displayName、返回链接风格完全一致 - [优化] 个人信息页"修改密码"改为折叠按钮,点击后展开表单;新增"确认新密码"字段 + 两次输入一致性校验
- [优化] 门户首页欢迎语和右上角个人信息优先显示 displayName(显示名),回退 username
- [优化] 门户退出按钮改为 SVG 门+箭头图标,暗色/亮色模式均清晰可见,hover 高亮
- [优化] 创建用户弹窗(未填邮箱时)新增显示用户名和显示名,"复制密码"改为"复制信息",复制内容与邮件一致(含用户名、密码、登录地址、安全提示)
- [修复] deploy-ai.sh 中 OA 的 localhost→域名 sed 替换在 macOS BSD sed 下静默失败,导致生产环境 OA 导航链接指向 localhost:改用
sed $SED_I_BACKUP,同时 page.tsx 新增siteUrl()自动根据NODE_ENV构造域名 - [修复] OA 容器缺少 SMTP 环境变量,创建用户填邮箱时邮件发送静默失败:docker-compose.yml 添加 SMTP_HOST/PORT/USER/PASS/FROM
- [修复] OA 创建用户报 401:
LDAP_ADMIN_PASS回退默认值与服务器 LLDAP 实际密码不匹配 → 改为docker exec lldap printenv动态获取 - [修复] assets/issue 缺少 LDAP_URL/LDAP_BASE_DN,容器内回退 localhost 不可达 → docker-compose.yml 添加
- [修复] assets/issue 缺少 COOKIE_DOMAIN,JWT_SECRET 不一致,跨站点免登录失效 → 统一硬编码 JWT_SECRET + COOKIE_DOMAIN
- [修复] assets/issue 新用户 SSO 免登录自动创建:
getCurrentUser()增加INSERT OR IGNORE逻辑 - [修复] assets/issue Docker 镜像原生模块 musl/glibc 不兼容导致登录 API 500 → Dockerfile 改为
npm install在 COPY standalone 之后 +npm rebuild better-sqlite3+ 删除 musl 变体 - [修复] deploy-ai.sh
--build在无 Dockerfile 站点(OA)失败导致容器未重启 → 改为检测 Dockerfile 存在才加--build - [部署] deploy-ai.sh 新增构建后清理 musl 残留 + 根据 Dockerfile 存在与否自动决定是否
--build - [调整] 所有站点 docker-compose.yml 统一 JWT_SECRET=oa-shared-jwt-secret-tlyq-2026、COOKIE_DOMAIN=.tlyq.ai
2026-05-12
- [新增] 修改密码增加复杂度要求:至少 8 位,大写/小写/数字/特殊字符 4 选 3,前端实时显示密码强度指示器
- [修复] OA 容器只挂载单个 .db 文件导致 SQLite WAL 不共享,权限管理中已删除用户仍可见:改为挂载整个数据目录,WAL 文件实时同步
- [新增] 创建用户支持邮件发送密码:新增邮箱输入框(选填),填写后通过 nodemailer 将用户名和密码发送至指定邮箱,未填写则弹窗显示(原流程)
- [新增]
src/lib/email.ts邮件发送工具(163 企业邮箱 SMTP,HTML + 纯文本双版本) - [调整] 用户管理页标签重命名:「用户管理」→「删除用户」,「角色管理」→「权限管理」
- [调整] 邮件提示修改密码只能通过 OA 统一门户,不能在子站点修改
- [部署] OA 站点部署至 txjp 服务器,绑定域名 oa.tlyq.ai
- [部署] Cloudflare Origin Certificate 部署(覆盖 *.tlyq.ai,15 年有效期)
- [修复] OA 用户管理/角色管理加载缓慢:容器缺少 assets/issue 数据库卷挂载,LLDAP 缺少 sqlite3
- [修复] OA 容器重启后 nginx DNS 缓存旧 IP 导致 502:重启 nginx 解决
- [修复] www-ai 容器未启动导致 nginx 重载失败,连锁影响 OA 配置不生效
- [调整] 所有站点 nginx 改为运行时 DNS 解析(resolver 127.0.0.11),容器离线不再阻塞 nginx 重载
- [调整] OA API 路径改用环境变量(ASSETS_DB_PATH / ISSUE_DB_PATH),生产使用 Docker volume 路径
- [调整] sso.tlyq.ai 301 重定向至 oa.tlyq.ai
- [调整] assets/issue/oa JWT 密钥统一为 oa-shared-jwt-secret-tlyq-2026
- [调整] assets/issue docker-compose 移除 AUTHELIA_URL,添加 LDAP/COOKIE/INTERNAL_API_KEY 环境变量
- [调整] LLDAP admin 密码同步为 3Vm!Y!@RCiPs
2026-05-11
- [新增] OA 统一门户项目创建:Next.js 框架、LLDAP 认证、共享 JWT 跨站点免登录
- [新增] 门户首页:6 站点卡片聚合导航(资产管理/工单跟踪/官网/云平台/Token工厂/代码仓库)
- [新增] 登录/退出功能:直连 LLDAP 认证,签发 tlyq_session 共享 JWT
- [新增] 个人信息页:账户信息展示 + 会话有效期 + 修改密码(docker exec 调 lldap_set_password)
- [新增] 用户管理(admin 专属):创建用户/用户列表/角色管理三 tab
- [新增] 创建用户自动生成 12 位复杂密码,弹窗显示 + 一键复制
- [新增] 创建用户自动同步至 assets-ai/issue-ai,支持角色预设
- [新增] 创建用户角色下拉从各站点实时获取可用角色列表
- [新增] 用户列表含删除功能(LLDAP + 各站点 SQLite 同步删除)
- [新增] 角色管理:按站点修改用户角色,待保存机制 + 批量提交 + 确认弹窗
- [新增] 深色/浅色主题切换(CSS 变量 + localStorage 持久化,同 assets/issue 风格)
- [新增] 统一顶栏:主题按钮 + 用户头像 + 个人信息链接 + 图标退出
- [新增] 站点卡片 hover 域名提示 + 动画效果
- [新增] CLAUDE.md / README.md / CHANGELOG.md
- [调整] 登录逻辑 v2.1:LLDAP 优先认证 + 本地密码缓存回退 + localadmin 应急用户
- [调整] LLDAP 删除用户后,assets/issue 实时检测并踢出已登录用户
- [调整] 会话有效期显示精确到秒
- [优化] 用户管理页与首页顶栏样式统一(主题按钮/头像/退出图标)
- [优化] 密码特殊字符通过 base64 编码传输,避免 shell 转义问题
- [优化] 站点卡片统一高度,移动端适配