8月24日:用一张继承树收拢散落在四处的权限字段
在业务越做越多之后,我发现数据库里的权限判断逻辑已经乱成了一团麻:判断一个人是不是超管看 users.role,判断能不能管论坛看论坛自己的版主表,判断能不能进 MC 管理后台看另一套枚举,而云萤机器人又有自己的一套白名单。每次加个新管理角色,都得改四五处代码。
于是在 2026 年 8 月 24 日,我设计并上线了全站统一权限中心:
- 权限组继承树(
permission_groups):像搭积木一样支持父子继承,比如mc.superadmin可以自然继承mc.techadmin和mc.admin的全部权限节点; - 个人级
ALLOW / DENY显式覆盖:如果某个普通玩家临时帮忙测试某个管理功能,不需要给他升管理组,直接在他个人账号上单挂一条ALLOW节点,或者对某个违规管理单挂一条优先级最高的DENY封禁节点即可。
从此,全站超管、BBS 社区管理、Minecraft 管理台以及云萤机器人的操作权限,全部收进了同一套鉴权引擎里。
8月27日:为什么自己造一套图片云盘?
解决了权限问题,紧接着三天后的 2026 年 8 月 27 日,我又动手治理另一个老大难问题——图片与附件存储。
以前用户在论坛发帖传图、改头像、或者在 Wiki 里贴截图,文件散落在各个站点的本地目录里,经常同一张几十兆的未压缩原图被传了四五遍,既撑爆硬盘又拖慢网页加载。为此,我开发了公共包 @igng/media 与独立的 igng-media 边车服务(Sidecar),并在 account.igng.net 里上线了可视化的个人云盘中心:
- 入库自动转 WebP:不管用户传上来的是笨重的 PNG 还是 JPG,媒体服务都会在后台自动清洗 EXIF 隐私信息并转码成高压缩比的 WebP 格式;
- 按 SHA256 内容去重扣配额:系统会先算文件内容的 SHA256 哈希,如果两张图内容一模一样,底层磁盘只存一份物理文件,用户的云盘配额也按去重后的真实占用精准计算。
10月20日进化:哪张图被哪篇帖子用了,一目了然
很多用户在清理自己云盘的时候都有个顾虑:“我把这张旧截图删了,会不会导致我半年前在论坛发的精品贴变成裂图?”
为了治好这个强迫症,我在 2026 年 10 月 20 日 给云盘加上了图片引用来源追踪(Referrers)和重复文件一键合并功能。现在点开云盘里的任何一张图片,面板都会清清楚楚地列出它当前正被 bbs 的哪篇帖子、wiki 的哪篇文档或者哪个个人签名引用着;哪怕不小心传了重复的图,也能一键把所有外部文章里的旧图链接无缝指向保留下来的那一张,再也不用担心误删导致网页裂图了。