fix(quick-261009-dkv): Pfade woertlich, Zaehler und Serverdatum, Rechte des Ordners (Schnittstelle)

- Pfade, Ziele und Empfaengerkennungen der Freigaben bleiben woertlich (nur Anzeigetexte werden bereinigt)
- Weitergaben als eigene Freigaben mit eigenem Pfad; accessOf nach Eintragsart
- Begrenzung: 10 neue Freigaben je 10 Minuten, 40 Versuche je 10 Minuten vor den Abfragen an die Nextcloud, leere Zaehler werden entfernt
- Freigaberegeln nennen das Serverdatum, die Ordnerliste die Berechtigungsbuchstaben des Ordners selbst
- Live-Test: Ablehnen offener Freigaben, Weitergabe, Buchstaben des Ordners

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-10-09 12:21:23 +02:00
parent 0585fd17c4
commit 78f6cf358d
13 changed files with 543 additions and 67 deletions
@@ -18,6 +18,8 @@ export interface ListingView {
entries: NcEntry[];
quota: NcQuota;
truncated: boolean;
/** Berechtigungsbuchstaben des Ordners selbst (z. B. `RGDNVCK`); null, wenn Nextcloud sie nicht nennt. */
permissions: string | null;
}
/** Vorschaubilder: hoechstens 5 MiB, nur Bilder (D-K). */
@@ -61,8 +63,14 @@ export class NextcloudFilesService {
const session = await this.session(tenantId, userId);
const result = await dav.list(this.transport, this.gate, session, segments);
if (!result.ok || result.listing === null) return this.fail(tenantId, userId, result);
const { entries, quota, truncated } = result.listing;
return { path: pathOf(segments), entries, quota, truncated };
const { entries, quota, truncated, folderPermissions } = result.listing;
return {
path: pathOf(segments),
entries,
quota,
truncated,
permissions: folderPermissions,
};
}
async createFolder(tenantId: string, userId: string, rawPath: string): Promise<{ path: string }> {