From 5c4a47128083e047441b0c6c03526093754c5161 Mon Sep 17 00:00:00 2001 From: linghutianhao Date: Fri, 14 Aug 2026 17:16:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95OAuth2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/2026开发笔记/26-7开发笔记.md | 26 +++---- docs/Docusaurus资料/cms构建说明.md | 114 +++++++++++++++++++++++++++++ docusaurus.config.ts | 4 +- package-lock.json | 6 +- static/admin/config.yaml | 21 ++++-- 5 files changed, 147 insertions(+), 24 deletions(-) diff --git a/docs/2026开发笔记/26-7开发笔记.md b/docs/2026开发笔记/26-7开发笔记.md index 9243623..2eefacb 100644 --- a/docs/2026开发笔记/26-7开发笔记.md +++ b/docs/2026开发笔记/26-7开发笔记.md @@ -101,7 +101,7 @@ sidebar_position: 7 还得新旧都测 -/houseManage/housePrivate!showEvaluateEstimateLogTab.action?cbsHouseCode=547114825&buildingHouseId=75906969 +/houseManage/housePrivate{'!'}showEvaluateEstimateLogTab.action?cbsHouseCode=547114825&buildingHouseId=75906969 原 @@ -185,7 +185,7 @@ sidebar_position: 7 3. 点击后触发招租失败定时任务处理 , 排除a条件 , 筛选合同是自己 -- 旧方法 √ -4. “操作成功,委托合同实际结束日已变更。” , “操作失败,失败原因为\{获取失败原因,如果为多个使用;分开}” --新action方法 +4. “操作成功,委托合同实际结束日已变更。” , “操作失败,失败原因为[获取失败原因,如果为多个使用;分开]” --新action方法 5. 部分城市告知cbs -- 北京有,杭州有,太原有,南京苏州天津有 郑州无,直营无? @@ -195,23 +195,23 @@ sidebar_position: 7 -太原:《相寓资产管理服务合同》补充协议 {收房维护人 , 租赁区副总监} +太原:《相寓资产管理服务合同》补充协议 [收房维护人 , 租赁区副总监] -南京:《南京相寓资产管理服务合同》补充协议 {相寓主管 , 相寓区域经理} +南京:《南京相寓资产管理服务合同》补充协议 [相寓主管 , 相寓区域经理] -苏州:《苏州相寓资产管理服务合同》补充协议 {相寓主管 , 相寓经理} +苏州:《苏州相寓资产管理服务合同》补充协议 [相寓主管 , 相寓经理] -天津:《天津相寓资产管理服务合同》补充协议 {相寓主管 , 相寓区域经理} +天津:《天津相寓资产管理服务合同》补充协议 [相寓主管 , 相寓区域经理] -郑州:《郑州相寓资产管理服务合同》补充协议 {经纪人 , 店经理} +郑州:《郑州相寓资产管理服务合同》补充协议 [经纪人 , 店经理] -北京:《北京相寓资产管理服务合同》补充协议 {经纪人 , 商圈经理} +北京:《北京相寓资产管理服务合同》补充协议 [经纪人 , 商圈经理] -杭州:《杭州相寓资产管理服务合同》补充协议 {租赁经纪人 , 业务主任} +杭州:《杭州相寓资产管理服务合同》补充协议 [租赁经纪人 , 业务主任] -武汉直营:《武汉相寓资产管理服务合同》补充协议 {综合管家 , 业务经理} +武汉直营:《武汉相寓资产管理服务合同》补充协议 [综合管家 , 业务经理] -成都直营:《成都相寓资产管理服务合同》补充协议 {资源经理(原经纪人) , 区域经理(原店经理)} +成都直营:《成都相寓资产管理服务合同》补充协议 [资源经理(原经纪人) , 区域经理(原店经理)] @@ -248,9 +248,9 @@ wtBlackApplyPage.jsp 加入/解除 申请(work只有申请) HouseInfoAction.comm 屏蔽类型 1:房源;2:楼栋;3:小区 4承租 - [x] 加入黑名单审批流变更 -- [x] 看生产页面分配给谁了 /basicsdate/houseInfo!listContractBlackInfo.action +- [x] 看生产页面分配给谁了 /basicsdate/houseInfo{'!'}listContractBlackInfo.action - [x] 列表数据展示范围 : 要开给管家和经理 , 可以查看自己提交的数据 -- [x] 看申请页权限分配给谁了 /basicsdate/houseInfo!wtBlackApplyPage.action?operateKbn=I +- [x] 看申请页权限分配给谁了 /basicsdate/houseInfo{'!'}wtBlackApplyPage.action?operateKbn=I - [x] 申请页面 管家只能屏蔽房源 , 经理只能屏蔽小区和楼栋 - [x] 申请校验 管家时 判断是否在管辖范围内 diff --git a/docs/Docusaurus资料/cms构建说明.md b/docs/Docusaurus资料/cms构建说明.md index 85fbe59..00855f6 100644 --- a/docs/Docusaurus资料/cms构建说明.md +++ b/docs/Docusaurus资料/cms构建说明.md @@ -127,6 +127,120 @@ GITEE_CLIENT_ID=xxx GITEE_CLIENT_SECRET=xxx node server.js +### sveltia-cms + gitea(当前使用) + +Sveltia CMS 直接对接 Gitea:浏览器登录 Gitea(OAuth2 隐式授权),编辑内容保存后直接提交到 Gitea 仓库。 + +``` +浏览器 → Sveltia CMS UI (localhost:3000/admin) → Gitea API (115.190.192.69:3011) + → OAuth 登录 → 直接 commit/push +``` + +**配置(static/admin/config.yaml)** + +```yaml +backend: + name: gitea + repo: admin/docusaurus + branch: main + base_url: http://115.190.192.69:3011 + auth_endpoint: /login/oauth/authorize + auth_scope: read_user,write:repository +``` + +**Gitea 侧要做两件事(一次性):** + +1. 创建 OAuth2 应用 + - 登录 Gitea → 头像 → 设置 → 应用 → 管理 OAuth2 应用程序 → 创建新应用 + - 应用名称:`Sveltia CMS` + - 重定向 URI:`http://localhost:3000/admin/`(必须与访问 CMS 的地址完全一致,含结尾斜杠;以后换域名/端口要回来改) + - 创建后复制 **Client ID**,填到 `static/admin/config.yaml` 的 `backend.client_id`(去掉注释)(隐式授权不需要 Secret) + +2. 开启 CORS(改 Gitea 服务器上的 `app.ini`,然后重启 Gitea) + + ```ini + [cors] + ENABLED = true + SCHEME = http + ALLOW_DOMAIN = localhost:3000 + ALLOW_SUBDOMAIN = false + METHODS = GET,POST,PUT,PATCH,DELETE,OPTIONS + MAX_AGE = 600 + ALLOW_CREDENTIALS = false + ``` + + > app.ini 位置:Windows 一般在 `C:\Program Files\Gitea\custom\conf\app.ini`,Linux 在 `/etc/gitea/app.ini`;也可以在 Gitea 后台「站点管理 → 配置」里看到实际路径。 + > 若从局域网其他电脑访问,把 `ALLOW_DOMAIN` 改成对应主机名/IP。 + +**启动与访问** + +```bash +npm start +# 打开 http://localhost:3000/admin/index.html (若 /admin/ 被 Docusaurus 路由拦截就用这个) +``` + +点 Login with Gitea → 授权后即可编辑,保存即提交到 `admin/docusaurus` 的 `main` 分支。 + +**排错** + +- 登录跳转后报 `invalid client` / 授权页打不开:`client_id` 没填或填错 → 检查 `backend.client_id` +- 登录成功但列表/保存报 CORS 错误(控制台 `Access-Control-Allow-Origin`):Gitea 的 `[cors]` 没开或 `ALLOW_DOMAIN` 没包含 `localhost:3000`,或 Gitea 没重启 +- 重定向 URI 不匹配(Gitea 报 `invalid redirect_uri`):Gitea 里 OAuth 应用的重定向 URI 必须与浏览器地址栏实际访问的 CMS 地址逐字符一致 +- 分支不对:确认 `branch: main` 与仓库默认分支一致 + +### 部署到服务器(115.190.192.69,站点 3000 端口 / Gitea 3011 端口) + +站点和 Gitea 放同一台服务器,浏览器访问 `http://115.190.192.69:3000/admin/`,CMS 直连 Gitea(3011)。 + +**1. 构建** + +```bash +npm run build # 产物在 build/ +``` + +**2. 把代码弄到服务器(推荐源码方式,便于后续自动重建)** + +```bash +# 服务器上(需装 node ≥ 20) +git clone http://115.190.192.69:3011/admin/docusaurus.git +cd docusaurus +npm install +``` + +**3. 启动站点(3000 端口)** + +```bash +npm run build && npm run serve -- --host 0.0.0.0 --port 3000 +# 或用 nginx/caddy 把 build/ 目录静态托管在 3000 端口 +# 防火墙放行 3000 端口 +``` + +**4. Gitea 侧(一次性,改完重启 Gitea)** + +- OAuth 应用的重定向 URI 加一行:`http://115.190.192.69:3000/admin/`(本地调试的 `http://localhost:3000/admin/` 可保留,多行添加) +- `app.ini` 的 CORS: + + ```ini + [cors] + ENABLED = true + SCHEME = http + ALLOW_DOMAIN = 115.190.192.69:3000 + ALLOW_SUBDOMAIN = false + METHODS = GET,POST,PUT,PATCH,DELETE,OPTIONS + MAX_AGE = 600 + ALLOW_CREDENTIALS = false + ``` + +**5. 访问 `http://115.190.192.69:3000/admin/` → Login with Gitea** + +**内容更新闭环(关键)** + +CMS 里保存 = 直接 commit 到 Gitea 仓库,但静态站点不会自动更新,需要服务器重建: + +- **方案 A(推荐)**:Gitea 建 Push Webhook(URL 指向服务器上的小脚本,如 `http://115.190.192.69:8080/hook`),脚本收到推送后执行 `git pull && npm run build`,再重启/重载静态服务 +- **方案 B(手动)**:改完内容后 SSH 上服务器 `git pull && npm run build` +- **方案 C(省事)**:服务器定时任务每分钟 `git pull`,有变更才 build + ### tina-cms(卡) https://tina.io/docs/reference/config diff --git a/docusaurus.config.ts b/docusaurus.config.ts index b3732d1..1d016b9 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -33,7 +33,7 @@ const config: Config = { docs: { sidebarPath: './sidebars.ts', // 本地部署,编辑链接直接在 Typora 中打开 - editUrl: 'typora://file/D:/projects/my-website/', + editUrl: 'http://115.190.192.69:3011/admin/docusaurus/_edit/main', }, blog: { showReadingTime: false, @@ -42,7 +42,7 @@ const config: Config = { type: ['rss', 'atom'], xslt: true, }, - editUrl: 'typora://file/D:/projects/my-website/', + editUrl: 'http://115.190.192.69:3011/admin/docusaurus/_edit/main', onInlineTags: 'warn', onInlineAuthors: 'warn', onUntruncatedBlogPosts: 'warn', diff --git a/package-lock.json b/package-lock.json index 056c827..10fce56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12208,9 +12208,9 @@ "license": "MIT" }, "node_modules/lunr-languages": { - "version": "1.20.0", - "resolved": "https://registry.npmmirror.com/lunr-languages/-/lunr-languages-1.20.0.tgz", - "integrity": "sha512-3LVgE7ekWXt04NBci/hjm+NXJxXZeRXuyClL0kA0HONyBOjxhP3ZQkuWIM4Ok3pbeptUW/rj3XcJcJuJVPwPYA==", + "version": "1.21.0", + "resolved": "https://registry.npmmirror.com/lunr-languages/-/lunr-languages-1.21.0.tgz", + "integrity": "sha512-Hj0VwJP1FGwZzVMMZdDtWY2GB2VVKtvVElYtVajzCZCDr2RTucyLpPibrOPGgTlcq2ENQy2gYLtPnzyFu9jZCg==", "license": "MPL-1.1" }, "node_modules/mark.js": { diff --git a/static/admin/config.yaml b/static/admin/config.yaml index e38c723..19aaa05 100644 --- a/static/admin/config.yaml +++ b/static/admin/config.yaml @@ -1,17 +1,26 @@ # ============================================ -# Sveltia CMS 配置 +# Sveltia CMS 配置(Decap 兼容语法) +# 后端:Gitea(OAuth2 隐式授权,浏览器直连 Gitea API) # ============================================ backend: - name: github - repo: lhth/testdecap - branch: master + name: gitea + repo: admin/docusaurus + branch: main + base_url: http://115.190.192.69:3011 + auth_endpoint: /login/oauth/authorize + auth_scope: read_user,write:repository + # 在 Gitea「设置 → 应用 → 管理 OAuth2 应用程序」里创建应用,重定向 URI 填: + # http://115.190.192.69:3000/admin/ + # http://localhost:3000/admin/ (本地调试,可多行添加) + # Client ID 如下: + client_id: 7d62ff16-bb6b-467e-b5ea-22e238a3d5f8 media_folder: static/img public_folder: /img -site_url: https://your-docusaurus-site.example.com -display_url: https://your-docusaurus-site.example.com +site_url: http://115.190.192.69:3000 +display_url: http://115.190.192.69:3000 logo: src: /img/code.ico