后台管理
管理后台
用户管理、积分调整和订阅控制。
概述
管理后台位于 /admin,需要 user.role = 'admin'。
设置
创建管理员账户:
ADMIN_EMAIL=your@email.com pnpm admin:setup或手动在数据库中将已有用户的 role 设为 'admin'。
功能
用户管理(/admin/users)
- 按姓名或邮箱搜索用户
- 分页用户列表(每页 20 条)
- 查看:姓名、邮箱、积分、角色、封禁状态、计划
用户操作
| 操作 | 端点 | 说明 |
|---|---|---|
| 调整积分 | PUT /api/admin/users/[userId]/credits | 增加或减少积分 |
| 修改订阅 | PUT /api/admin/users/[userId]/subscription | 更新用户计划 |
| 封禁用户 | 通过管理面板 | 临时或永久封禁 |
订阅管理(/admin/subscriptions)
- 查看所有活跃订阅
- 按计划和状态筛选
积分账本(/admin/credits)
- 查看所有用户的积分交易记录
- 按原因、日期范围筛选
权限控制
管理页面由 app/[locale]/(admin)/layout.tsx 中的 admin route group layout 保护,它会调用 modules/auth 导出的 requireAdmin():
// 检查 user.role === "admin"
// 非管理员会被重定向离开管理区域管理员 API 路由同样会调用 modules/auth 中的 requireAdmin()。底层实现位于 modules/auth/admin.ts。