41 lines
1.4 KiB
TypeScript
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),
|
|
};
|
|
}),
|
|
});
|