feat(admin): GitHub OAuth login, admin whitelist and Nuxt WebUI

Add an admin WebUI (Nuxt static SPA in admin/, served via the ASSETS
binding) for managing routes and viewing send logs. Access is gated by
GitHub OAuth plus an ADMIN_USER_IDS whitelist with cookie sessions
(admin-session.ts). Expose routes/logs CRUD API (admin-routes.ts), add a
discord-link mapping in token-store.ts, and mount admin routes with an
SPA assets fallback in the server.
This commit is contained in:
RhenCloud 2026-08-02 06:50:41 +08:00
parent cfdf37e273
commit 407514f3c9
No known key found for this signature in database
GPG key ID: A574A617378C4E0B
20 changed files with 3242 additions and 13 deletions

View file

@ -0,0 +1,13 @@
<template>
<div class="toasts">
<TransitionGroup name="toast">
<div v-for="t in toasts" :key="t.id" class="toast" :class="t.kind" @click="dismiss(t.id)">
{{ t.msg }}
</div>
</TransitionGroup>
</div>
</template>
<script setup lang="ts">
const { toasts, dismiss } = useToasts();
</script>