Auto-inlog opent in nieuw tabblad via GET route

Vervangt server action door /api/auto-login GET route zodat
<a target="_blank"> werkt. Server action verwijderd.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Maarten Elsenaar
2026-09-15 13:45:19 +02:00
parent ff395ac959
commit 0bd5825e98
2 changed files with 36 additions and 11 deletions
+28
View File
@@ -0,0 +1,28 @@
import { NextRequest, NextResponse } from "next/server";
import { createHmac } from "crypto";
import { getSession } from "../../../lib/auth";
import { getPlatformDb } from "../../../lib/platform-db";
export async function GET(request: NextRequest) {
const session = await getSession();
if (!session) return NextResponse.redirect(new URL("/login", request.url));
const accountId = Number(request.nextUrl.searchParams.get("account_id"));
const slug = request.nextUrl.searchParams.get("slug");
if (!accountId || !slug) return NextResponse.redirect(new URL("/tenants", request.url));
const db = getPlatformDb();
const user = db
.prepare("SELECT id FROM users WHERE account_id = ? AND role = 'admin' LIMIT 1")
.get(accountId) as { id: number } | undefined;
if (!user) return NextResponse.redirect(new URL("/tenants?error=no-admin", request.url));
const secret = process.env.AUTO_LOGIN_SECRET!;
const expires = Date.now() + 60_000;
const payload = `${user.id}:${accountId}:${expires}`;
const sig = createHmac("sha256", secret).update(payload).digest("hex");
const token = encodeURIComponent(`${payload}:${sig}`);
return NextResponse.redirect(`https://${slug}.rikxplatform.nl/auto-login?token=${token}`);
}
+6 -9
View File
@@ -3,7 +3,6 @@ import { getSession } from "../../lib/auth";
import { listAccounts } from "../../lib/platform-db";
import { createTenant, deleteTenant } from "./actions";
import { logout } from "./logout";
import { autoLogin } from "./auto-login";
export default async function TenantsPage({
searchParams,
@@ -80,16 +79,14 @@ export default async function TenantsPage({
{new Date(a.created_at).toLocaleDateString("nl-NL")}
</td>
<td className="px-4 py-3 text-right">
<form action={autoLogin}>
<input type="hidden" name="account_id" value={a.id} />
<input type="hidden" name="slug" value={a.slug} />
<button
type="submit"
<a
href={`/api/auto-login?account_id=${a.id}&slug=${a.slug}`}
target="_blank"
rel="noopener noreferrer"
className="text-xs text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300 transition-colors"
>
Inloggen
</button>
</form>
Inloggen ↗
</a>
</td>
<td className="px-4 py-3 text-right">
<form action={deleteTenant}>