Rechtevergabe bei Kategorien greift nicht

  • Betroffene App
    WoltLab Suite Blog

    Komplette Neuinstallation aus dem Blog-Thema ohne WBB oder sonst einem Plugin:

    Ich lege zwei Kategorien an.

    • Kategorie 1
      Gruppe Jeder
      • Kann Kategorie sehen => gestattet
      • Kann Artikel in Kategorie eintragen => gestattet
    • Kategorie 2
      Gruppe Jeder

      • Kann Kategorie sehen => verweigert
      • Kann Artikel in Kategorie eintragen => verweigert

    Dennoch werden auf der Blog-Startseite beide Kategorien angezeigt.
    Beide Kategorien kann ich auch anklicken, bekomme nirgends einen Rechte-Fehler.

    Wenn ich einen Blog-Artikel schreibe, werden auch beide Kategorien angezeigt.

    Einmal editiert, zuletzt von phopium (19. August 2013 um 18:59)

  • Hab mal geschaut. In der Datenbank werden die Werte zumindest schonmal richtig gesetzt. In wcf1_acl_option_to_group sind jeweils die Werte 1 bei den "Gestattet"-Optionen und die Werte 0 für die "Verweigert"-Optionen korrekt hinterlegt.

    Scheint also zumindest schonmal nicht daran zu liegen.
    Evtl. grenzt das den Bereich etwas ein. :)

  • @Alexander Ebert - ich habe mal ein bißchen "gedebuggt" ;)

    Die ganze Geschichte scheitert in der BlogCategory->getPermission():

    Code
    public function getPermission($permission) {
            $result = parent::getPermission($permission);
            if (!isset($this->permissions[$permission])) {
                return true;
            }
            return $result;
        }

    Das zunächst richtige Ergebnis von $result = parent::getPermission($permission) wird anschließend mit TRUE überschrieben, da BlogCategory keinen Zugriff auf $this->permission hat ...

    Zudem seltsam: die Funktion Category->getPermission() setzt das Ergebnis für nicht gefundene Permissions auf FALSE!

    Code
    public function getPermission($permission) {
            if ($this->permissions === null) {
                $this->permissions = CategoryPermissionHandler::getInstance()->getPermissions($this);
            }
            if (isset($this->permissions[$permission])) {
                return $this->permissions[$permission];
            }
    
            return false;
        }

    Der Kopf ist rund, damit das Denken die Richtung wechseln kann (Francis Picabia)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!