---
import { getDatabase } from "@/db";
import { personalAccessTokens } from "@/db/schema";
import SettingsLayout from "@/layouts/SettingsLayout.astro";
import { desc, eq } from "drizzle-orm";
const user = Astro.locals.user;
if (!user) {
return Astro.redirect("/login");
}
const db = getDatabase();
let tokens: any[] = [];
try {
tokens = await db.query.personalAccessTokens.findMany({
where: eq(personalAccessTokens.userId, user.id),
orderBy: [desc(personalAccessTokens.createdAt)],
});
} catch (e) {}
import TokensManager from "@/components/settings/TokensManager";
const serializableTokens = tokens.map((t) => ({
id: t.id,
name: t.name,
tokenPrefix: t.token.startsWith("och_") ? `${t.token.slice(0, 12)}...` : "och_********",
createdAt: t.createdAt.toISOString(),
expiresAt: t.expiresAt ? t.expiresAt.toISOString() : null,
lastUsedAt: t.lastUsedAt ? t.lastUsedAt.toISOString() : null,
}));
---
<SettingsLayout title="Personal Access Tokens">
<TokensManager initialTokens={serializableTokens} client:load />
</SettingsLayout>