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>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user