Spaces:
Runtime error
Runtime error
| import { NextResponse } from "next/server"; | |
| import { requireManagementAuth } from "@/lib/api/requireManagementAuth"; | |
| import { extractBearer, ACCESS_TOKEN_PREFIX } from "@/server/authz/accessTokenAuth"; | |
| import { verifyAccessToken, getAccessToken } from "@/lib/db/accessTokens"; | |
| /** | |
| * GET /api/cli/whoami — report the current credential to the CLI. | |
| * | |
| * Requires a valid management credential (read scope is enough — it's a GET). | |
| * When the caller used a scoped CLI access token, returns its name/scope/expiry | |
| * so `omniroute connect --key` / `context current` can confirm what they hold. | |
| * Other credentials (dashboard session, manage-scope API key, loopback CLI | |
| * token) report `viaAccessToken: false`. | |
| */ | |
| export async function GET(request: Request) { | |
| const authError = await requireManagementAuth(request); | |
| if (authError) return authError; | |
| const bearer = extractBearer(request); | |
| if (bearer && bearer.startsWith(ACCESS_TOKEN_PREFIX)) { | |
| const verified = verifyAccessToken(bearer); | |
| if (verified) { | |
| const record = getAccessToken(verified.id); | |
| return NextResponse.json({ | |
| authenticated: true, | |
| viaAccessToken: true, | |
| id: verified.id, | |
| name: verified.name, | |
| scope: verified.scope, | |
| createdAt: record?.createdAt ?? null, | |
| lastUsedAt: record?.lastUsedAt ?? null, | |
| expiresAt: record?.expiresAt ?? null, | |
| }); | |
| } | |
| } | |
| return NextResponse.json({ authenticated: true, viaAccessToken: false, scope: null }); | |
| } | |