Support » Allgemeine Fragen » Benutzerechte für Mediathek

  • Gelöst Marco

    (@marco27)


    Hallo zusammen!

    Ich hoffe ich bin an dieser Stelle richtig und erhalte einen kleinen Hinweis zu folgender Situation:

    Ich überarbeite für meinen Verein gerade die Mediathek, in der verschiedene Nutzer Dokumente hochladen können. Für diese Nutzer gibt es verschiedene Rollen (ein Teil der Nutzer hat Schreib- und Leserechte, ein anderer Teil nur Leserechte.) Von diesen Nutzer wiederum gibt es zwei Gruppen und die Gruppe A soll nicht sehen was die Gruppe B in der Mediathek hochgeladen hat. In der Mediathek gibt es dann für jede Gruppe eigene Ordner, in denen Dateien sortiert werden können.

    Die Mitglieder werden über ein Membership Plugin angemeldet und sind dort einer Gruppe zugeordnet, deren Rechte über den UserRoleEditor definiert werden.

    Gibt es für die Mediathek die Möglichkeit die Benutzerrechte so einzustellen das alle Personen aus Gruppe A, die gleichen Dateien sehen und die aus Gruppe B ihre Dateien? Leider bekomme ich es nur soweit eingerichtet das jeder Nutzer seine eigenen Uploads sieht. Ich vermute das man es mit current_user_can lösen kann (der User Role Editor macht im Grunde das Gleiche), aber ich bekomme es nicht zum Laufen (auch mit Code in der functions.php.

    Vielleicht hat jemand einen Tipp, auch wie man es per Code lösen könnte.

    Grüße
    Marco

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Hallo,
    eine ähnliche Frage hatten wir hier schon mal vor einiger Zeit. Hier der Link zum Thread.
    Schau mal in den folgenden Beitrag oder in diesen Beitrag. In beiden Fällen werden Lösungen mit und ohne Plugin beschrieben.
    Viele Grüße
    Hans-Gerd

    Thread-Starter Marco

    (@marco27)

    Vielen Dank. Ich werde mich in dem Beitrag mal einlesen.

    Thread-Starter Marco

    (@marco27)

    Hallo,
    eine Rückfrage dazu.

    Ich würde es jetzt gerne so machen, das ich die Benutzerrollen nicht über ein Plug-in, sondern durch Code in der functions.php im Child-Theme erstelle.

    Ich habe eine Testweise Benutzerrolle erzeugt welche Beiträge in der Mediathek hochladen, lesen und löschen soll.

    add_role('world', __('World'), 
    	array(
    	'read' => true,
    	'upload_files' => true,
            'edit_posts'   => true,
            'delete_posts' => true,
            'delete_others_posts' => true,
            'manage_options' => true,
    	)
    );

    Dabei ist es mir mit den capabilities nicht möglich das ich einen Eintrag in der Mediathek löschen kann (über den Link „Entgültig löschen“). Ich habe mir die Capabilities der Admin-Rolle angesehen, finde aber keine Möglichkeit wie ich der Rolle die capability „Medieneintrag löschen“ hinzufügen kann.

    Ich habe etwas über die Funktion wp_delete_attachment gelesen und stehe ein wenig auf dem Schlauch ob ich diese wirklich verwenden muss, oder ob es nicht auch über das Hinzufügen einer Capability funktioniert.

    Hallo,
    das sollte an sich über die Eigenschaft upload_files möglich sein, wenn du da true notiert hast.
    Ich habe aber gerade noch ein Plugin als Alternative gefunden. Vielleicht löst das Plugin das Problem (auch wenn du vielleicht lieber verständlicherweise den Code nutzen würdest).
    Viele Grüße
    Hans-Gerd

    Thread-Starter Marco

    (@marco27)

    Danke für den Tipp! Über das Plug-in konnte ich sehen das bei der Testrolle „World“ die im Code auf true gesetzten Capabilities aktiv waren. Da scheint also schon mal kein Fehler bestanden zu haben. Ich habe mit dem Plugin eine neue Testrolle angelegt und hier die upload_files Variable gesetzt. Die Dateien in der Mediathek können nun gelöscht werden.

    Kommt es da vllt zu einem Konflikt mit der capabilities.php? Oder warum wurde die Rolle „World“ nicht korrekt angelegt? Eigentlich dürfte add_role in der functions.php doch nur ein Funktionsaufruf mit Parameterübergabe sein?

    • Diese Antwort wurde geändert vor 3 Jahren, 2 Monaten von Marco.
    Thread-Starter Marco

    (@marco27)

    Ich würde gerne noch einmal auf das Thema Benutzerrechte in der Mediathek zurückkommen.
    Meine Ausgangssituation ist ja das ich zwei Gruppen habe, die jeweils nicht sehen sollen welche Dokumente hochgeladen wurden. Ein Plugin was das ganze für mich löst habe ich leider nicht gefunden.

    Nun habe ich den Code für die Zugriffsrechte aus dem Beispiel oben angepasst, basierend auf der Doku: https://developer.wordpress.org/reference/classes/wp_query/#author-parameters

    Leider ist das in meinem Fall nicht besonders erfolgreich.

    /**
     * Limit media library access
     */
    function user_group_library_permission($query) {
        
        /**
         * Group A
         */
        // id's 8-10 advanced user roles, id's 24-33 read only user roles
        $users_sw = [ 8, 9, 10, 24, 25, 26, 27, 28, 29, 30, 32, 33 ];
    
        if ($users_sw && !current_user_can('activate_plugins') && !current_user_can('edit_others_posts')) {    
            $query['author__in'] = $users_sw;
        }
        return $query;
        
    }
    add_filter('ajax_query_attachments_args', 'user_group_library_permission');

    Gefühlt bin ich von der Lösung nicht mehr weit entfernt. Nur verstehe ich nicht wie ich mit dem query auf die IDs im Array zugreifen kann.

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Das Thema „Benutzerechte für Mediathek“ ist für neue Antworten geschlossen.