Ergebnis 1 bis 2 von 2

Thema: 3.3.1 Nachrichten sind für Benutzer (Redakteure) nicht einseh- und editierbar

  1. #1
    Contao-Nutzer
    Registriert seit
    24.07.2010.
    Beiträge
    3

    Frage 3.3.1 Nachrichten sind für Benutzer (Redakteure) nicht einseh- und editierbar

    Hallo,

    ich nutze Contao 3.3.1 und habe einen Benutzer erstellt, der nur Nachrichten editieren soll. Alle Rechte wurde soweit ich das sehe richtig vergeben. Aber jedes mal, wenn dieser Redakteur im Backend auf Nachrichten klickt und dann auf eines der freigegebenen Kategorien, erscheint die Meldung "Ein Fehler ist aufgetreten!" Im Systemlog erscheint zu dieser Aktion:
    ID: 64
    Ursprung: Backend
    Kategorie: ERROR
    Benutzer: news
    Details: Invalid news content element ID 1
    Funktion: tl_content_news::checkAccessToElement

    Egal, was ich mache - hier wird nichts angezeigt.

    Gebe ich testweise Artikelrechte, so kann der gleiche Redakteur alles normal bearbeiten. Es geht ausschließlich nicht mit den Nachrichten. Gebe ich dem Redaktuer Adminrechte, geht natürlich auch alles. Aber das möchte ich explizit nicht.

    Hat hier jemand eine Idee?

    Vielen Dank!

  2. #2
    Contao-Nutzer Avatar von rory_ch
    Registriert seit
    11.05.2016.
    Ort
    Schweiz
    Beiträge
    119

    HTML Weitere Recherche

    Hallo Rogi

    Der Beitrag ist bereits alt, aber das Problem scheint bei uns noch aktuell zu sein.
    Daher wollte ich mal meine Nachforschungen hier kundgeben:

    Der Fehler scheint innerhalb des Files: system/modules/news/dca/tl_content.php zu liegen.

    Beim Öffnen eines der News-Bilder wird die Methode "CheckPermissions" mit dem GET Parameter act = show ausgeführt.
    Innerhalb der Methode scheint jedoch dieser "act" nicht behandelt zu werden.
    Daher wird der Standard ausgeführt und dieser besagt, dass $this->checkAccessToElement(Input::get('id'), $root) ausgeführt wird.
    Innerhalb dieser Methode wird basierend auf dem 3. Parameter entschieden, welche SELECT Abfrage stattfindet.
    Da wir wie oben festgestellt, im Standard-Ablauf sind, wird nun der "falsche" SELECT verwendet.
    Somit wird nun die Tabelle tl_content abgefragt, aber mit den IDs aus der tl_news.
    Es ist also absolut zufällig, ob ein Eintrag gefunden wird oder nicht da es die falsche Tabelle ist.

    Als Workaround kann man innerhalb von checkPermission, im "switch" Statement, einen eigenen Case schaffen:
    PHP-Code:
    case 'show':
        
    // Check access to the news item
        
    if (!$this->checkAccessToElement(Input::get('id'), $roottrue))
        {
            
    $this->redirect('contao/main.php?act=error');
        }
        break; 
    Dieser muss einfach vor "default:" sein, am besten z.B. nach dem "select" case.
    Damit bewirken wir, dass der dritte Parameter true ist und tl_news dadurch abgefragt wird.

    Da dies ein relativ hässlicher Weg ist, habe ich das ganze noch in englisch als Issue hinterlegt, damit es bereinigt wird:
    https://github.com/contao/core/issues/8625

    Gruss Rory
    Geändert von rory_ch (18.01.2017 um 11:13 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •