Skip to content

Latest commit

 

History

30 Commits

Folders and files

Repository files navigation

OAuth Manager

Blessing Skin Server 插件 —— OAuth 授权管理与应用大厅。

功能

OAuth 授权记录

  • 查看当前账户授权的所有第三方 OAuth 应用
  • 按客户端分组展示授权信息(应用名称、域名、授权时间、权限范围)
  • 权限范围(Scope)自动翻译为中文,悬停显示原始标识
  • 一键取消某个应用的授权(吊销 access token 及关联的 refresh token)

OAuth 应用大厅

  • 浏览站点所有可用的 OAuth 应用
  • 显示应用名称、域名(可点击跳转)、创建者、使用人数
  • 自动获取应用 favicon 图标,获取失败时显示默认图标
  • 标记当前用户是否已授权
  • 应用是否展示由开发者自行控制(见下)

开发者控制大厅展示

  • 应用创建者可在「我的 OAuth 应用」页面对自己创建的应用勾选「在大厅展示」
  • 关闭后,该应用不会出现在其他用户浏览的应用大厅中,但仍可正常完成 OAuth 授权
  • 可见性偏好保存在 options 表中(键 oauth_record_hall_visibility),无需新建数据库表
  • 历史已存在的应用默认均在大厅展示,开发者可按需隐藏

管理员配置

  • 功能开关:独立控制「授权记录」和「应用大厅」的菜单显示
  • 「授权记录」与「我的 OAuth 应用」收纳于用户侧边栏「高级功能」分组下;「应用大厅」仍作为「浏览」顶层的独立入口
  • 自动清理冗余令牌:同一客户端仅保留最新一条活跃令牌
  • 自动删除已吊销令牌:查看授权记录时物理删除无用记录
  • 一键清理全站已吊销记录
  • 一键清理全站冗余令牌
  • 显示全站已吊销令牌统计

依赖

  • Blessing Skin Server ^6
  • PHP ^8.0
  • Laravel Passport(Blessing Skin 内置)

安装

将插件目录放入 Blessing Skin 的 plugins/ 目录:

cp -r oauth-manager /path/to/blessing-skin/plugins/

然后在后台「插件管理」中启用 OAuth 管理 插件即可。

目录结构

oauth-manager/
├── package.json                          # 插件清单
├── bootstrap.php                         # 启动引导(注册路由、菜单)
├── callbacks.php                         # 生命周期回调(启用时初始化配置项)
├── src/
│   └── Controllers/
│       ├── OAuthRecordController.php     # 授权记录控制器
│       ├── AppHallController.php         # 应用大厅控制器
│       └── ConfigController.php          # 插件配置控制器
├── views/
│   ├── index.twig                        # 授权记录页面
│   ├── hall.twig                         # 应用大厅页面
│   └── config.twig                       # 配置页面
└── lang/
    ├── zh_CN/
    │   └── oauth-record.yml              # 中文翻译
    └── en/
        └── oauth-record.yml              # 英文翻译

路由

方法 路径 说明
GET /user/oauth-record 授权记录页面
POST /user/oauth-record/revoke/{tokenId} 吊销单条令牌
POST /user/oauth-record/revoke-client/{clientId} 吊销某客户端的所有令牌
GET /oauth-apps 应用大厅页面
GET /user/oauth-apps/manage 开发者应用管理页面(勾选是否在大厅展示)
POST /user/oauth-apps/manage/visibility 切换指定应用的展厅可见性
POST /admin/oauth-record/cleanup 清理全站已吊销记录
POST /admin/oauth-record/cleanup-redundant 清理全站冗余令牌

授权记录路由需要登录且邮箱已验证,应用大厅仅需登录。

配置项

在后台「插件管理 → 插件配置 → OAuth 管理」中设置。

功能开关

配置项 默认值 说明
oauth_record_enable_auth_record true 启用 OAuth 授权记录页面(关闭后侧边栏菜单隐藏)
oauth_record_enable_app_hall true 启用 OAuth 应用大厅页面(关闭后侧边栏菜单隐藏)

令牌清理

配置项 默认值 说明
oauth_record_auto_cleanup false 自动清理冗余令牌。开启后,查看授权记录时会自动吊销同一客户端多余的旧令牌,仅保留最新一条。
oauth_record_clean_revoked false 自动删除已吊销令牌。开启后,查看授权记录时会从数据库中物理删除已吊销的令牌记录。

配置页还提供两个管理员操作按钮:

  • 清理已吊销记录 — 一键删除全站所有 revoked=true 的 access token、refresh token、auth code
  • 清理冗余令牌 — 一键吊销全站同一用户同一应用的多余令牌,仅保留最新一条

工作原理

插件直接读取 Laravel Passport 的 oauth_access_tokens、oauth_clients 等表,无需创建额外的数据库表。

查询时自动排除:

  • 已吊销(revoked = true)的令牌
  • 已过期(expires_at < now)的令牌
  • 个人访问令牌(personal_access_client = true)
  • 客户端本身已吊销的授权

取消授权时调用 Passport 的 Token::revoke() 将 revoked 置为 true,同时更新 oauth_refresh_tokens 表使刷新令牌一并失效。

许可证

MIT

About

Blessing Skin Server 插件 —— OAuth 授权管理与应用大厅。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages