Gedankenstriche durch Bindestriche ersetzt
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die README; an keiner Stelle Bedeutung, nur Zeichensetzung.
This commit is contained in:
@@ -9,7 +9,7 @@ import { createHash } from 'node:crypto'
|
||||
* Dokument geben, das für eine höhere Stufe gerendert wurde.
|
||||
*
|
||||
* Der Stand (`updatedAt`) sorgt dafür, dass eine geänderte Akte neu gerendert
|
||||
* wird — ein Export darf nie einen älteren Stand zeigen, als die Akte hat.
|
||||
* wird - ein Export darf nie einen älteren Stand zeigen, als die Akte hat.
|
||||
*/
|
||||
export function exportCacheKey(input: {
|
||||
kind: string
|
||||
|
||||
@@ -6,7 +6,7 @@ import type { EffectivePermissions } from '@/lib/auth/permissions'
|
||||
/**
|
||||
* Vollständiger JSON-Abzug als Umzugs- und Notfallformat.
|
||||
*
|
||||
* **Ohne Stufenfilterung**, nur mit Recht `admin`, immer protokolliert — so
|
||||
* **Ohne Stufenfilterung**, nur mit Recht `admin`, immer protokolliert - so
|
||||
* steht es in docs/08-suche-und-export.md. Das ist die eine Stelle im System,
|
||||
* an der die Klassifizierung nicht greift, und sie ist deshalb absichtlich
|
||||
* unbequem: kein Knopf an einer Akte, sondern eine eigene Seite im
|
||||
|
||||
@@ -5,7 +5,7 @@ import type { EffectivePermissions } from '@/lib/auth/permissions'
|
||||
/**
|
||||
* Die Druckansicht dient zwei Aufrufern: dem PDF-Dienst mit Zeichen und einem
|
||||
* Menschen, der sie sich ansieht. Diese Funktion steht in einer eigenen Datei,
|
||||
* weil sie `next-auth` lädt — der Zeichenpfad soll das nicht müssen.
|
||||
* weil sie `next-auth` lädt - der Zeichenpfad soll das nicht müssen.
|
||||
*/
|
||||
export async function permissionsForPrint(
|
||||
token: string | null | undefined,
|
||||
|
||||
@@ -11,7 +11,7 @@ import type { EffectivePermissions } from '@/lib/auth/permissions'
|
||||
*
|
||||
* Die Stufe kommt dabei nicht aus dem Zeichen, sondern wird frisch aufgelöst
|
||||
* und dann auf die im Zeichen vermerkte **gedeckelt**. Damit kann ein Zeichen
|
||||
* nie mehr zeigen, als der Abrufer beim Anfragen sehen durfte — und auch nicht
|
||||
* nie mehr zeigen, als der Abrufer beim Anfragen sehen durfte - und auch nicht
|
||||
* mehr, als er jetzt noch darf, falls ihm inzwischen Rechte entzogen wurden.
|
||||
*/
|
||||
export async function permissionsFromRenderToken(
|
||||
|
||||
@@ -18,14 +18,14 @@ import type { EffectivePermissions } from '@/lib/auth/permissions'
|
||||
*
|
||||
* 1. **Der Export respektiert die Stufe des Abrufers.** Die Druckansicht
|
||||
* rendert mit seinen Rechten, gesperrte Felder erscheinen als Schwärzung
|
||||
* mit Vermerk — nicht weggelassen, sonst merkt der Empfänger nicht, dass
|
||||
* mit Vermerk - nicht weggelassen, sonst merkt der Empfänger nicht, dass
|
||||
* er eine gekürzte Fassung hat.
|
||||
* 2. **Wasserzeichen** auf jeder Seite: Name, Zeitstempel, Stufe.
|
||||
* 3. **Jeder Export wird protokolliert**, ausnahmslos und mit Stufe,
|
||||
* Zeitpunkt und Anlass.
|
||||
*
|
||||
* Wer exportieren darf, entscheidet allein die Freigabestufe: **mindestens die
|
||||
* des Ziels.** Das ist strenger als das Lesen — wer als Beteiligter
|
||||
* des Ziels.** Das ist strenger als das Lesen - wer als Beteiligter
|
||||
* ausnahmsweise in eine höher eingestufte Akte darf, darf sie deshalb noch
|
||||
* nicht ausser Haus geben. Und es ist einfacher als das frühere
|
||||
* Vier-Augen-Verfahren, das ab Stufe 3 eine zweite Unterschrift verlangte:
|
||||
@@ -38,7 +38,7 @@ export type ExportTarget =
|
||||
| { kind: 'DOCUMENT'; documentNumber: string }
|
||||
|
||||
/**
|
||||
* Legt einen Auftrag an — oder gibt einen fertigen zurück, wenn genau dieser
|
||||
* Legt einen Auftrag an - oder gibt einen fertigen zurück, wenn genau dieser
|
||||
* Stand schon einmal für diese Stufe gerendert wurde.
|
||||
*/
|
||||
export async function requestExport(
|
||||
@@ -71,7 +71,7 @@ export async function requestExport(
|
||||
return { jobId: fertig.id, status: 'READY' }
|
||||
}
|
||||
|
||||
// Läuft schon einer für denselben Stand? Dann daran hängen — aber der
|
||||
// Läuft schon einer für denselben Stand? Dann daran hängen - aber der
|
||||
// Protokolleintrag entsteht trotzdem. „Jeder Export wird protokolliert"
|
||||
// heisst jeder Abruf, nicht jeder Rendervorgang: wer sich an einen fremden
|
||||
// Auftrag hängt, bekommt dieselbe Datei und muss genauso darin stehen.
|
||||
|
||||
@@ -35,7 +35,7 @@ export function createRenderToken(claim: Omit<RenderClaim, 'expiresAt'>): string
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft das Zeichen. Gibt `null` zurück, wenn irgendetwas nicht stimmt — der
|
||||
* Prüft das Zeichen. Gibt `null` zurück, wenn irgendetwas nicht stimmt - der
|
||||
* Aufrufer macht daraus 404, nicht 403: dass es die Druckansicht gibt, geht
|
||||
* niemanden etwas an, der kein gültiges Zeichen hat.
|
||||
*/
|
||||
|
||||
@@ -4,7 +4,7 @@ import { createHash } from 'node:crypto'
|
||||
* Ein winziger ZIP-Schreiber, nur „gespeichert" ohne Kompression.
|
||||
*
|
||||
* Eigener Code statt einer Abhängigkeit, weil der Inhalt eines Sammelexports
|
||||
* PDFs und bereits neu kodierte Bilder sind — beides ist komprimiert, ein
|
||||
* PDFs und bereits neu kodierte Bilder sind - beides ist komprimiert, ein
|
||||
* Deflate darüber bringt nichts und kostet nur CPU auf einem Heimserver. Was
|
||||
* bleibt, ist das Behälterformat, und das sind achtzig Zeilen.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user