Files
tessera-ctl/apps/api/src/nextcloud-status/nextcloud-logo-rules.ts
T
schalli 6698ef1a92 feat(nextcloud-status): Clouds verwalten, Logos, stündliche Prüfung und Sortierung
- Ändern, Entfernen, Logo-Upload und -Abruf, Sammelprüfung nur mit Verwalten
- Stündlicher Auftrag beim Start registriert, Prüfung je Cloud an ihren Mandanten gebunden
- Sortierung nach Kundenname, Status, Version und Support-Ende, je Benutzer gemerkt
- Formular zum Anlegen und Bearbeiten, Zugriffsinventar angepasst

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 14:54:58 +02:00

22 lines
1.0 KiB
TypeScript

import { type DashboardImageMime, detectImageMime } from '../dashboard/dashboard-image-rules';
/**
* Regeln fuer hochgeladene Cloud-Logos (quick-261002-k67, L-02, D-A).
* Kein Nest, kein Prisma — direkt an den Bytes testbar.
*
* Erlaubt sind PNG, JPEG, GIF und WebP bis 1 MiB. KEIN SVG: ein SVG kann
* Skript tragen und wuerde, direkt im Tab geoeffnet, unter der Adresse von
* Tessera laufen. Der Typ kommt aus den Magic Bytes, nie aus dem vom Browser
* behaupteten `mimetype` oder der Dateiendung (Muster T-PI9-01); der erkannte
* Typ ist zugleich der Typ, mit dem die Auslieferung antwortet (T-k67-02).
*/
/** Hoechstgroesse: 1 MiB (multer `limits.fileSize` an der Route + zweites Netz im Dienst). */
export const NEXTCLOUD_LOGO_MAX_BYTES = 1024 * 1024;
/** Erkannter Bildtyp oder `null`, wenn leer, zu gross oder kein erlaubtes Bildformat. */
export function checkLogoUpload(buffer: Uint8Array): DashboardImageMime | null {
if (buffer.length === 0 || buffer.length > NEXTCLOUD_LOGO_MAX_BYTES) return null;
return detectImageMime(buffer);
}