Files
FireAdministration/src/server/routers/stammdaten/dienstausweis.ts
T

41 lines
1.4 KiB
TypeScript

import { router, angemeldet, eigeneAkte } from "@/server/trpc";
import { AUSWEIS_GUELTIG_SEKUNDEN, ausweisErzeugen } from "@/lib/dienstausweis";
import { env } from "@/lib/env";
/**
* Der digitale Dienstausweis.
*
* Nur eine Abfrage, und sie gibt immer den Ausweis der eigenen Person aus —
* es gibt bewusst keinen Weg, sich den Ausweis eines anderen ausstellen zu
* lassen. Ein Ausweis, den jemand für einen Dritten erzeugen kann, ist keiner.
*
* Kein eigenes Recht: einen Ausweis über sich selbst darf jeder haben, der in
* der Wehr ist. Was darauf steht, steht ohnehin auf jeder Mitgliederliste.
*/
export const dienstausweisRouter = router({
eigener: angemeldet.query(async ({ ctx }) => {
const person = await ctx.db((db) =>
db.person.findUnique({
where: { id: eigeneAkte(ctx.sitzung) },
select: {
vorname: true,
nachname: true,
dienstgrad: true,
organisation: { select: { name: true, kurzname: true } },
},
}),
);
const code = ausweisErzeugen(eigeneAkte(ctx.sitzung), ctx.sitzung.organisationId);
return {
person,
code,
/** Was in den QR-Code geschrieben wird. */
adresse: `${env.APP_URL}/ausweis/${encodeURIComponent(code)}`,
gueltigSekunden: AUSWEIS_GUELTIG_SEKUNDEN,
gueltigBis: new Date(Date.now() + AUSWEIS_GUELTIG_SEKUNDEN * 1000),
};
}),
});