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
新闻/Alphasync-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/posts CMS)
  • preset_module_types、preset_websites
  • orders(订单管理);清理/修复资讯时涉及 news_items_cache、binance_alpha_news_cache 等
Admin 后台 | 追踪狗文档