Seite 1 von 1

Nach Update von 4.8.7 auf 4.8.9 Gechützter Bereich sichtbar

Verfasst: Do 18. Dez 2008, 09:00
von theodorH
Nach dem Update von 4.8.7 auf 4.8.9 sind in der Hauptnavigation alle geschützte Kategorien sichtbar. Dies ist ebenfalls bei einer neuen Standardinstallation der Fall. Wo kann ich diese wieder verbergen?

Verfasst: Mo 22. Dez 2008, 14:31
von emergence
dies ist auch beim demo mandanten der fall ?

gibts einträge im errorlog.txt ?

Verfasst: Mo 22. Dez 2008, 14:36
von Oldperl
Hallo theodorH,

konnte den Fehler nachvollziehen. In der contenido/classes/Contenido_FrontendNavigation/Contenido_FrontendNavigation.class.php ab Zeile 133 steht folgendes

Code: Alles auswählen

	        // check against fe-auth and against be-access
	        if ($bUseAuth === true && intval($this->oDb->f('public')) == 0) {
	            $sPerms = strval($this->oAuth->auth['perm']);
	            if (strpos($sPerms, 'sysadmin') !== false || strpos($sPerms, 'admin' !== false) ||
	                   (strpos($sPerms, 'client['.strval($this->iClient)).']' !== false && strpos($sPerms, 'lang['.strval($this->iLang)).']' !== false)) {
	                $this->aCategories[] = (int) $this->oDb->f('idcat');
                    $this->aLevel[(int) $this->oDb->f('idcat')] = (int) $this->oDb->f('level');
	            } else {
Dabei ist mir folgender Teil der if-Abfrage etwas schleierhaft und erzeugt den Fehler wie beschrieben

Code: Alles auswählen

||
	                   (strpos($sPerms, 'client['.strval($this->iClient)).']' !== false && strpos($sPerms, 'lang['.strval($this->iLang)).']' !== false)
Dort soll wohl auf die Arrays client bzw. lang geprüft werden, was so aber nicht funktioniert und hier die if-Schleife nicht in den else-Zweig, wie eigentlich gewünscht, verzweigt.
Bis jemand von 4fb da mal geschaut hat, wie das gedacht ist, hilft ein auskommentieren dieses Teils wie folgt.

Code: Alles auswählen

// check against fe-auth and against be-access
	        if ($bUseAuth === true && intval($this->oDb->f('public')) == 0) {
	            $sPerms = strval($this->oAuth->auth['perm']);
	            if (strpos($sPerms, 'sysadmin') !== false || strpos($sPerms, 'admin' !== false) /*|| (strpos($sPerms, 'client['.strval($this->iClient)).']' !== false && strpos($sPerms, 'lang['.strval($this->iLang)).']' !== false)*/) {
	                $this->aCategories[] = (int) $this->oDb->f('idcat');
                    $this->aLevel[(int) $this->oDb->f('idcat')] = (int) $this->oDb->f('level');
	            } else {
Gruß aus Franken

Ortwin

PS: Verschoben nach Bugs

Verfasst: Do 1. Jan 2009, 13:05
von JeromeW
Der Bug wäre für mich ein Grund die Version zu sperren. Wenn da einer persönliche Daten in geschützten Bereichen hat, kann es übel werden...

Viele Grüße
JeromeW

Verfasst: Do 1. Jan 2009, 16:11
von mfweb
Deshalb sollte man ein Update ja auch (zumindest das erste Mal) nie am Produktivsystem machen, sondern immer vorher einmal an einer Kopie ausprobieren. Es könnten ja auch andere Sachen (die im eigenen System angepasst wurden) nicht mehr einwandfrei funktionieren ...

Grüße
mfweb

Verfasst: Mo 5. Jan 2009, 10:37
von timo.trautmann_4fb
Änderung eingecheckt. Zwar wurden die geschützten Kategorien in der Navi angezeigt, jedoch sollte man dennoch keinen Zugriff darauf erhalten haben, sofern man darauf geklickt hat.

Verfasst: Mo 5. Jan 2009, 11:12
von Oldperl
@timo,

was hast du da eingecheckt? Meine Auskommentierung?

Mich hätte schon mal interessiert warum dieser Codeschnipsel da steht. Wurde ja bestimmt nicht grundlos reingeschrieben.

Gruß aus Franken

Ortwin

Verfasst: Mo 5. Jan 2009, 11:38
von timo.trautmann_4fb
Nein, es war nur ein Tippfehler:

Code: Alles auswählen

 if ($bUseAuth === true && intval($this->oDb->f('public')) == 0) {
	            $sPerms = strval($this->oAuth->auth['perm']);
	            if (strpos($sPerms, 'sysadmin') !== false || strpos($sPerms, 'admin' !== false) ||
	                   (strpos($sPerms, 'client['.strval($this->iClient).']') !== false && strpos($sPerms, 'lang['.strval($this->iLang).']') !== false)) {
	                $this->aCategories[] = (int) $this->oDb->f('idcat');
                    $this->aLevel[(int) $this->oDb->f('idcat')] = (int) $this->oDb->f('level');
	            } else {