Admin 后台
/admin 管理端界面与 /api/admin/* 接口及权限模型。
概览
管理界面在 src/app/[locale]/(admin)/admin/*(订单、用户、预设、文章、邀请、监控、调试等)。敏感操作须与 ADMIN_EMAILS(及可选数据库字段)一致,校验见 src/lib/admin.ts 与 /api/admin/check-permission。
权限
- GET
/api/admin/check-permission:用auth()会话邮箱对比ADMIN_EMAILS,必要时查库。 - 各管理 API 应在变更数据前做管理员校验(复用
isAdmin或统一前置检查)。
API 分组(示例)
| 领域 | 路由示例 |
|---|---|
| 预设 | preset-modules、preset-websites、full-sync-presets |
| 内容 | copy-admin-content、template-content、clear-news-cache |
| 统计/调试 | profile-stats、stats、debug-env、debug-modules |
| 新闻/Alpha | sync-binance-alpha、reprocess-binance-alpha、clean-duplicate-events |
| 用户/邀请 | invitations、set-admin |
数据流
Admin 路由 → src/services/* → src/models/* / Drizzle,与全局约定一致。
关键文件
src/lib/admin.ts— 邮箱白名单。src/app/api/admin/check-permission/route.ts— 前端入口权限探测。
Dependencies
环境变量
ADMIN_EMAILS— 服务端白名单;NEXT_PUBLIC_ADMIN_EMAILS供前端辅助判断(src/lib/admin.ts)。ADMIN_SECRET_KEY— 可选 Bearer;clear-news-cache亦接受CRON_SECRET_KEY。DATABASE_URL
数据库(src/db/schema.ts)
users(如is_admin、用户列表)posts(/admin/postsCMS)preset_module_types、preset_websitesorders(订单管理);清理/修复资讯时涉及news_items_cache、binance_alpha_news_cache等