6698ef1a92
- Ä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>
22 lines
1.0 KiB
TypeScript
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);
|
|
}
|