Skip to content

feat(profile): 开发者选项入口 — 密钥管理 + CONTRIBUTING 基础设施访问段#306

Closed
longsizhuo wants to merge 3 commits intomainfrom
feat/admin-secrets-card
Closed

feat(profile): 开发者选项入口 — 密钥管理 + CONTRIBUTING 基础设施访问段#306
longsizhuo wants to merge 3 commits intomainfrom
feat/admin-secrets-card

Conversation

@longsizhuo
Copy link
Copy Markdown
Member

变更

代码

  • 新加 `DeveloperToolsIfOwner.tsx` client 组件,渲染条件:已登录 + 本人主页(不限 admin role,与 AdminLinkIfOwnerAdmin 刻意区分)
  • `/u/[username]` 按钮栏插入,顺序:编辑 → 密钥管理 → 管理员界面 → 排行
  • `target="_blank"` 到 `secrets.involutionhell.com`,Infisical 自己 OAuth + RBAC 控制实际权限
  • `data-umami-event` 埋点便于看使用情况

文档

  • CONTRIBUTING.md 新增基础设施访问段(贡献者可以查到入口 / 何时能用 / 如何申请权限)
  • 修正密钥管理按钮可见性描述:不是 admin-only,是所有登录本人都看得到

与 AdminLinkIfOwnerAdmin 的区别

AdminLinkIfOwnerAdmin DeveloperToolsIfOwner
渲染条件 登录 + 本人 + `role=admin` 登录 + 本人
指向 站内 `/admin` 外站 `secrets.involutionhell.com`
二次权限 后端 `@SaCheckRole` Infisical OAuth + 内部 RBAC

和 AdminLinkIfOwnerAdmin 刻意分开:AdminLink 是 admin 专属入口,这个对所有登录
用户开放(只要访问的是自己主页)。对应的访问控制不在前端——Infisical 自己有
GitHub OAuth + project-level RBAC,非 admin 协作者登录后只看得到自己有权限的
secrets。

- 新加 DeveloperToolsIfOwner client 组件:owner 判定条件和 AdminLinkIfOwnerAdmin
  保持一致(githubId 或 username 任一匹配即视为本人)
- profile 页按钮栏里插在 AdminLink 前,顺序:编辑 → 密钥管理 → 管理员界面 → 排行
- data-umami-event 埋点 profile_devtools_secrets_click,方便看谁在用
- target=_blank 到 secrets.involutionhell.com(自托管 Infisical 实例)
新协作者进来要知道怎么登主站 / Infisical / pgAdmin,怎么申请 admin 角色,
.env 文件的分布与规则。之前这些都在脑子里或散在 wiki 里,CONTRIBUTING
作为贡献指南得自带一份快速索引。

- 服务一览表:谁能进 / 登录方式
- admin 权限申请流程(别手工 insert user_accounts 踩孤儿坑)
- .env 文件位置和为什么 prod/dev 故意不一样(链到 wiki changelog)
- 个人主页的开发者自助入口说明
- Spring Boot 本地启动的 source .env 姿势(memory 里的 feedback_ih_backend_dev_start)

放在 🚀 开发环境 和 📚 文档规范 之间,让人 setup 完环境后紧接着看到。
CR 指出 '所有登录协作者可见' 有歧义——按钮实现只在本人访问自己主页时
渲染,路人和其他登录用户在别人主页上看不到。Infisical 站本身才是对所有协作
者开放。分清楚两层语义避免贡献者迷惑。
Copilot AI review requested due to automatic review settings April 17, 2026 23:26
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 17, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
involutionhell-github-io Ready Ready Preview, Comment Apr 17, 2026 11:26pm
website-preview Ready Ready Preview, Comment Apr 17, 2026 11:26pm

@longsizhuo
Copy link
Copy Markdown
Member Author

main 已通过 #303 / #305 合入同等内容(用户另起 PR 做了决策差异:改为独立 Infisical OAuth App 而不是复用主站)。本 PR 所有代码与文档都已过时,关闭避免混淆。

@longsizhuo longsizhuo closed this Apr 17, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

为个人主页新增「开发者选项」入口(面向“已登录且访问本人主页”的用户),提供到 Infisical 密钥管理的快捷跳转,并在 CONTRIBUTING 中补充基础设施访问说明,帮助贡献者理解入口与权限申请方式。

Changes:

  • 新增 DeveloperToolsIfOwner 客户端组件:仅本人登录访问自己主页时展示“密钥管理 ↗”外链入口
  • /u/[username] 顶部按钮栏按顺序插入“密钥管理”入口(编辑 → 密钥管理 → 管理员界面 → 排行)
  • 扩充 CONTRIBUTING.md 的“基础设施访问”章节并整理部分 Markdown 空白格式

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
app/u/[username]/page.tsx 在个人主页按钮栏引入并渲染 DeveloperToolsIfOwner
app/u/[username]/DeveloperToolsIfOwner.tsx 新增密钥管理入口组件(owner-only 渲染 + Umami 埋点 + 外链跳转)
CONTRIBUTING.md 新增基础设施访问说明、权限申请/入口指引与部分排版修正

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +39 to +44
href="https://secrets.involutionhell.com"
target="_blank"
rel="noopener noreferrer"
className="font-mono text-[11px] uppercase tracking-widest px-2 py-1 border border-[var(--foreground)] text-[var(--foreground)] hover:bg-[var(--foreground)] hover:text-[var(--background)] transition-colors font-bold"
data-umami-event="profile_devtools_secrets_click"
title="Infisical 密钥管理(GitHub OAuth 登录,按 project 权限查看)"
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

secrets.involutionhell.com*.involutionhell.com 子域;而当前登录态会把 satoken 写成 Domain=.involutionhell.com 的非 HttpOnly cookie(见 lib/use-auth.tsxsyncTokenCookie)。这意味着用户点击这里会把站内会话 token 自动带到 secrets 子域,并可能被该子域上的前端脚本读取/泄露。建议:尽量把密钥管理放到不共享该 cookie 的独立域名,或将 satoken cookie 的 Domain 收窄到仅 api.involutionhell.com(专供 pgAdmin forward_auth 场景),避免扩大 token 暴露面。

Copilot uses AI. Check for mistakes.
Comment thread CONTRIBUTING.md
Comment on lines +374 to +377
- 本地 dev:
- 后端:`involution-hell-project/backend/.env`(`set -a && . ./.env && set +a` 注入 Spring Boot)
- 前端:`involution-hell-project/frontend/.env`
- 生产:`/home/ubuntu/involution-hell/.env`(**只在部署机**,不在仓库里;CI 不覆盖)
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里新增的 .env 路径写的是 involution-hell-project/backend/.envinvolution-hell-project/frontend/.env,但这些目录在当前仓库中不存在。建议明确说明这是“另一个仓库/部署目录”的路径并给出链接,或改为当前仓库的实际路径,避免贡献者照做找不到文件。

Suggested change
- 本地 dev:
- 后端:`involution-hell-project/backend/.env``set -a && . ./.env && set +a` 注入 Spring Boot)
- 前端:`involution-hell-project/frontend/.env`
- 生产:`/home/ubuntu/involution-hell/.env`**只在部署机**,不在仓库里;CI 不覆盖)
- 下面提到的本地 dev 路径是**外部工作区 / 联动项目目录**中的 `.env` 位置示例,**不是当前仓库内一定存在的目录**;如果你当前检出的就是本文档所在仓库,请不要在本仓库根目录下寻找 `involution-hell-project/`
- 本地 dev:
- 后端:`involution-hell-project/backend/.env`(外部工作区路径;`set -a && . ./.env && set +a` 注入 Spring Boot)
- 前端:`involution-hell-project/frontend/.env`(外部工作区路径)
- 生产:`/home/ubuntu/involution-hell/.env`**只在部署机**,不在当前仓库里;CI 不覆盖)

Copilot uses AI. Check for mistakes.
Comment thread CONTRIBUTING.md
Comment on lines +385 to +389
- **密钥管理 ↗**(本人访问自己主页时可见) → 跳 Infisical
- **管理员界面**(仅 admin 本人访问自己主页时可见) → 跳 `/admin`
- **编辑**(仅本人访问自己主页时可见) → 跳 profile 编辑

三个按钮都走 "只有本人看自己主页时才渲染",路人和其他登录用户在这里看不到。
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

“开发者自助入口”这里列出的按钮顺序与页面实际按钮栏顺序不一致:页面是“编辑 → 密钥管理 → 管理员界面 → 排行”(见 app/u/[username]/page.tsx),但文档这里把“编辑”放在最后。建议把列表顺序调整为与 UI 一致,减少读者困惑。

Suggested change
- **密钥管理 ↗**(本人访问自己主页时可见) → 跳 Infisical
- **管理员界面**(仅 admin 本人访问自己主页时可见) → 跳 `/admin`
- **编辑**(仅本人访问自己主页时可见) → 跳 profile 编辑
三个按钮都走 "只有本人看自己主页时才渲染",路人和其他登录用户在这里看不到。
- **编辑**(仅本人访问自己主页时可见) → 跳 profile 编辑
- **密钥管理 ↗**(本人访问自己主页时可见) → 跳 Infisical
- **管理员界面**(仅 admin 本人访问自己主页时可见) → 跳 `/admin`
- **排行** → 跳个人主页排行视图
四个按钮里,**编辑****密钥管理****管理员界面**都走 "只有本人看自己主页时才渲染",路人和其他登录用户在这里看不到。

Copilot uses AI. Check for mistakes.
Comment thread CONTRIBUTING.md
Comment on lines +396 to +398
cd involution-hell-project/backend
set -a && . ./.env && set +a # .env 里有 SERVER_PORT=8081 等
./mvnw spring-boot:run
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里的后端启动步骤 cd involution-hell-project/backend 指向的目录在当前仓库中不存在。建议补充说明后端代码所在仓库/目录与获取方式(或移除该段落),否则贡献者按文档操作会直接失败。

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants