Benutzer hinterlegen ihre öffentlichen Schlüssel einmal, Admins zusätzlich Team-Schlüssel. Sie kommen in jeden Gast: im Assistenten vorausgewählt und abwählbar, per API und CLI automatisch, wenn die Anfrage keine nennt. Die Schlüssel kommen über die Schnittstelle SchluesselQuelle – dort lässt sich später eine externe Verwaltung anbinden. Vorgezogen aus #015 auf die Frage, ob Schlüssel ins Template gehören: nein, in die Verwaltung. Refs #015 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
22 lines
737 B
TypeScript
22 lines
737 B
TypeScript
import { prisma } from "@/lib/db";
|
|
import type { GastSchluessel, SchluesselQuelle } from "./quelle";
|
|
|
|
/** Schlüssel aus der eigenen Datenbank: die des Benutzers und die Team-Schlüssel. */
|
|
export const lokaleQuelle: SchluesselQuelle = {
|
|
name: "lokal",
|
|
async schluesselFuer(benutzer) {
|
|
const zeilen = await prisma.sshSchluessel.findMany({
|
|
where: { OR: [{ benutzerId: benutzer.id }, { benutzerId: null }] },
|
|
orderBy: [{ benutzerId: "asc" }, { name: "asc" }],
|
|
});
|
|
return zeilen.map((z): GastSchluessel => ({
|
|
id: z.id,
|
|
name: z.name,
|
|
oeffentlich: z.oeffentlich,
|
|
fingerabdruck: z.fingerabdruck,
|
|
bereich: z.benutzerId ? "persoenlich" : "team",
|
|
quelle: z.quelle,
|
|
}));
|
|
},
|
|
};
|