Support » Allgemeine Fragen » Mediathek Datei-Upload spezieller Dateiformate (BIM) für Redaktions User

  • Gelöst frontendhomie

    (@frontendhomie)


    Guten Tag,

    STORY
    ich probiere seit einigen Tagen einem Problem auf die Schliche zu kommen. Für ein WordPress Projekt eines Architekten, möchte ich dem Kunden (Redaktions User Account) die Möglichkeit geben, BIM Daten in die Mediathek hochzuladen. Um genau zu sein RVT (.rvt) und IFC (.ifc) Dateien.

    Dies wird standard mäßig blockiert: „Dieser Dateityp ist aus Sicherheitsgründen leider nicht erlaubt.“

    CODE
    Noch ein bisschen google kommt man relativ schnell auf den Lösungsansatz das ganze über 

    wp-config:
    define( 'ALLOW_UNFILTERED_UPLOADS', true );

    und functions.php:

    function mimes() {
        $mime_types = array(
            'jpg'     => 'image/jpeg',
            'rvt'     => 'application/octet-stream',
            'ifc'     => 'application/x-step',
            'svg'     => 'image/svg+xml',
            'png'     => 'image/png',
            'pdf'     => 'application/pdf',
        );
        return $mime_types;
    }
    add_filter( 'upload_mimes', 'mimes' );

    zu lösen.

    PROBLEM
    Dies funktioniert auch für meine Admin Account, sprich ich kann im Anschluss die Dateiformate ohne Probleme in die Mediathek hochladen. Allerdings funktioniert es nicht für einen Redaktions Account.

    DEBUGGING
    Was ich durch debugging bis jetzt ausschließen kann:
    – Es ist kein Problem auf User Seite
    – Es ist kein Problem auf Browser Seite
    – Es ist kein Server Problem
    – Es ist kein Theme oder Plugin Problem

    Ich habe ein frisches WP aufgesetzt, das Standard Theme twentytwentyone aktiviert und die Snippets eingebaut. Gleiches Phenomän: Admin User kann hochladen, Redaktions User nicht. Es scheint als würde WordPress im Core ein Problem mit der Kombination: nicht Admin user + Bim Daten Formate haben.

    Kann sich das jemand erklären?
    Oder hat da eventuell sogar Erfahrung mit?

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)
  • Moderator Bego Mario Garde

    (@pixolin)

    Vorbildlich beschrieben. 👍🏻

    Was mir als Angabe fehlt: verwendest du dabei eine Multisite (WordPress-Netzwerk)?

    Thread-Ersteller frontendhomie

    (@frontendhomie)

    Danke, ist keine Multisite.

    Das funktioniert noch immer für alle Rollen: https://bueltge.de/einschraenken-der-daten-typen-im-wordpress-upload/1338/ eben getestet

    Moderator Bego Mario Garde

    (@pixolin)

    Es hat wohl Versuche gegeben, als jpg-Datei getarnten, ausführbaren Code in WordPress hochzuladen. In Folge wurde in WordPress 5.0.1 eine Filterfunktion eingeführt, die prüft, ob eine Datei mit Endung .jpg auch wirklich eine jpg-Datei ist. (vgl. https://make.wordpress.org/core/2018/12/13/backwards-compatibility-breaks-in-5-0-1/) Ich vermute dass die Definition des File-Type alleine nicht reicht, weil die Prüfung dann fehlschlägt.

    Zu der Einstellung define('ALLOW_UNFILTERED_UPLOADS', true); steht in der Dokumentation

    With this constant defined, all roles on a single site install can be given the unfiltered_upload capability, but only Super Admins can be given the capability on a Multisite install.

    oder mit Deepl übersetzt

    Wenn diese Konstante definiert ist, können alle Rollen auf einer Einzelsite-Installation die Fähigkeit unfiltered_upload erhalten, aber nur Superadmins können die Fähigkeit auf einer Multisite-Installation erhalten.

    … was Grund für meine Rückfrage war.

    Ein möglicherweise funktionierender Workaround wäre, die Dateien in einer komprimiertren zip-Datei zur Verfügung zu stellen.

    Moderator Angelika Reisiger

    (@la-geek)

    Das würde ich wieder entfernen

    wp-config:
    define( 'ALLOW_UNFILTERED_UPLOADS', true );

    Du könntest mal testen:
    'rvt' => 'application/x-revit',

    oder auch:

    /*----------------------------------------------------------------------------------------- */
    //* Restrict the upload of mime types
    /*----------------------------------------------------------------------------------------- */
    
    if ( ! function_exists( 'fb_restrict_mime_types' ) ) {
    
    	add_filter( 'upload_mimes', 'fb_restrict_mime_types' );
    
    	function fb_restrict_mime_types( $mime_types ) {
    	
    		$mime_types = array(
    			'pdf' => 'application/pdf',
                            'rvt'     => 'application/octet-stream',
                            'ifc'     => 'application/x-step',
                            'svg'     => 'image/svg+xml',
    			'jpg|jpeg' => 'image/jpeg',
    			'png' => 'image/png',
    		);
    		
    		return $mime_types;
    	}
    }

    oder testweise diesen Code mit „x-revit“.

    Thread-Ersteller frontendhomie

    (@frontendhomie)

    Vielen Dank Allerseits!

    Hier ist die Lösung:

    Lt. kurzem Blick in die Dokumentation zu ALLOW_UNFILTERED_UPLOADS erlaubt diese Konstante nicht direkt Uploads sondern nur, dass man dann Benutzerrollen die nötige unfiltered_upload Capability geben kann:

    Das kann man für die standard Redakteuer Rolle z.B. über diesen zusätzlichen Codeblock lösen:

    $role = get_role( 'editor' );
    if ( $role !== NULL ) {
        if ( !$role->has_cap( 'unfiltered_upload' ) ) $role->add_cap( 'unfiltered_upload' );
    }

    Damit sollte dann auch der Upload als Redakteur funktionieren.

    • Diese Antwort wurde geändert vor 2 Monaten von frontendhomie.
    Moderator Angelika Reisiger

    (@la-geek)

    @frontendhomie

    Damit sollte dann auch der Upload als Redakteur funktionieren.

    Ist das Thema jetzt gelöst?

    Thread-Ersteller frontendhomie

    (@frontendhomie)

    ist es.

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)