Ich hatte das Problem, dass ich mich mit einem Backend User der die Permission hat sich im Frontend einzuloggen dort aber nicht anmelden konnte... (Es wurde auf die Fehlerseite weitergeleitet)
Nach einigem Suchen im Code bin ich auf folgendes gestoßen:
In der Datei include.chain.frontend.cat_backendaccess.php wird der Parameter $user der Chain-Funktion mit
Code: Alles auswählen
Contenido_Security::toInteger($user)
Da es aber bei einem Backenduser die userid als Hash vorliegt wird natürlich nur bis zum auftauchen des ersten Buchstabens in Integer umgewandelt. Deshalb liefert die SQL abfrage ein leeres Resultat und es wird False an den Chain Iterator übergeben.
In front_content.php wird dann auf die Fehlerseite umgeleitet...
Hier der Code der Chainfunktion:
Code: Alles auswählen
function cecFrontendCategoryAccess_Backend($idlang, $idcat, $user)
{
global $cfg;
$sql = "SELECT idright
FROM ".$cfg["tab"]["rights"]." AS A,
".$cfg["tab"]["actions"]." AS B,
".$cfg["tab"]["area"]." AS C
WHERE B.name = 'front_allow' AND C.name = 'str' AND A.user_id = '". Contenido_Security::toInteger($user)."' AND A.idcat = '".Contenido_Security::toInteger($idcat)."'
AND A.idarea = C.idarea AND B.idaction = A.idaction AND A.idlang = '".Contenido_Security::toInteger($idlang)."'";
$db2 = new DB_Contenido;
$db2->query($sql);
if (!$db2->next_record())
{
return false;
}
else
{
return true;
}
}
Code: Alles auswählen
$sql = "SELECT idright
FROM ".$cfg["tab"]["rights"]." AS A,
".$cfg["tab"]["actions"]." AS B,
".$cfg["tab"]["area"]." AS C
WHERE B.name = 'front_allow' AND C.name = 'str' AND A.user_id = '". $user ."' AND A.idcat = '".Contenido_Security::toInteger($idcat)."'
AND A.idarea = C.idarea AND B.idaction = A.idaction AND A.idlang = '".Contenido_Security::toInteger($idlang)."'";
Dies Betrifft die Versionen 4.8.7 und 4.8.8. (Vermutlich auch die anderen 4.8.x Versionen, aber bei denen hab ich es nicht nachgeschaut)
Greets,
Martin.