安全
管理员系统
管理员角色、权限和用户管理
管理员系统
管理员权限基于 Better Auth 的 admin 插件,配合 packages/auth/src/permissions.ts 中的细粒度权限模型。
角色与权限
两个管理员角色,权限粒度不同:
| 权限 | SUPER_ADMIN | OPERATION_ADMIN |
|---|---|---|
| 查看用户 | yes | yes |
| 管理用户 | yes | yes |
| 封禁用户 | yes | yes |
| 分配角色 | yes | - |
| 查看职能角色 | yes | yes |
| 管理职能角色 | yes | - |
| 查看贡献 | yes | yes |
| 审核贡献 | yes | yes |
| 查看勋章 | yes | yes |
| 管理勋章 | yes | yes |
| 颁发勋章 | yes | yes |
| 查看组织 | yes | yes |
| 管理组织 | yes | - |
| 查看系统配置 | yes | - |
| 管理系统配置 | yes | - |
| 查看仪表板 | yes | yes |
在代码中检查管理员权限:
import { isAdmin, hasPermission, AdminPermission } from "@01mvp/auth/permissions";
if (isAdmin(user)) {
// 是管理员
}
if (hasPermission(user, AdminPermission.BAN_USERS)) {
// 有封禁用户权限
}向后兼容:数据库中旧的 "admin" 角色会被自动识别为 SUPER_ADMIN。
初始管理员
新项目第一次开放注册时,数据库中的首个注册用户会自动成为 super_admin。后续注册用户默认是普通成员,角色为 "user",不会自动获得后台权限。
这个规则适合新项目启动:先用真实邮箱注册第一个账号,进入后台后再按需要把其他账号调整为 super_admin 或 operation_admin。
调整管理员角色
超级管理员可以在后台用户管理中调整用户角色,也可以通过 Better Auth 的管理接口将用户的 role 字段设为 "super_admin" 或 "operation_admin"。
用户封禁
Better Auth admin 插件内置了用户封禁功能。封禁后该用户的 session 会被标记,后续请求会被拦截。