安全

管理员系统

管理员角色、权限和用户管理

管理员系统

管理员权限基于 Better Auth 的 admin 插件,配合 packages/auth/src/permissions.ts 中的细粒度权限模型。

角色与权限

两个管理员角色,权限粒度不同:

权限SUPER_ADMINOPERATION_ADMIN
查看用户yesyes
管理用户yesyes
封禁用户yesyes
分配角色yes-
查看职能角色yesyes
管理职能角色yes-
查看贡献yesyes
审核贡献yesyes
查看勋章yesyes
管理勋章yesyes
颁发勋章yesyes
查看组织yesyes
管理组织yes-
查看系统配置yes-
管理系统配置yes-
查看仪表板yesyes

在代码中检查管理员权限:

import { isAdmin, hasPermission, AdminPermission } from "@01mvp/auth/permissions";

if (isAdmin(user)) {
  // 是管理员
}

if (hasPermission(user, AdminPermission.BAN_USERS)) {
  // 有封禁用户权限
}

向后兼容:数据库中旧的 "admin" 角色会被自动识别为 SUPER_ADMIN

初始管理员

新项目第一次开放注册时,数据库中的首个注册用户会自动成为 super_admin。后续注册用户默认是普通成员,角色为 "user",不会自动获得后台权限。

这个规则适合新项目启动:先用真实邮箱注册第一个账号,进入后台后再按需要把其他账号调整为 super_adminoperation_admin

调整管理员角色

超级管理员可以在后台用户管理中调整用户角色,也可以通过 Better Auth 的管理接口将用户的 role 字段设为 "super_admin""operation_admin"

用户封禁

Better Auth admin 插件内置了用户封禁功能。封禁后该用户的 session 会被标记,后续请求会被拦截。