Implement RFID tag dump PWA with REST API, auth, and CI

Add Next.js app with SQLite/Drizzle storage for sites and LF/HF tag
dumps, multi-user Auth.js (credentials + optional OIDC), personal API
tokens in Settings, versioned /api/v1 for UI and future CLI use,
MCT/Proxmark/JSON import-export, PWA offline shell, Vitest tests, and
GitHub Actions CI.
This commit is contained in:
Cursor Agent
2026-08-23 22:17:51 +00:00
parent 5029945cc2
commit 3331944773
65 changed files with 13689 additions and 1 deletions
+27
View File
@@ -0,0 +1,27 @@
import { NextRequest } from "next/server";
import { and, eq } from "drizzle-orm";
import { requireApiUser, jsonError, jsonOk } from "@/lib/api/auth-guard";
import { getDb } from "@/db/client";
import { apiTokens } from "@/db/schema";
type Ctx = { params: Promise<{ id: string }> };
export async function DELETE(request: NextRequest, context: Ctx) {
const userOrRes = await requireApiUser(request);
if (userOrRes instanceof Response) return userOrRes;
const { id } = await context.params;
const db = getDb();
const existing = db
.select()
.from(apiTokens)
.where(and(eq(apiTokens.id, id), eq(apiTokens.userId, userOrRes.id)))
.get();
if (!existing) {
return jsonError(404, "NOT_FOUND", "Token not found");
}
db.delete(apiTokens).where(eq(apiTokens.id, id)).run();
return jsonOk({ ok: true });
}