Bug beim Frontend Login mit Backend User?

Gesperrt
martin2002
Beiträge: 41
Registriert: Fr 31. Okt 2003, 02:16
Wohnort: Potsdam
Kontaktdaten:

Bug beim Frontend Login mit Backend User?

Beitrag von martin2002 »

Hi.

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)
nach Integer konvertiert.
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;
	}
}
Ich denke mal, dass die SQL abfrage so gebaut werden müsste:

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)."'";
Da es sich bei dem "user_id" Parameter ja eh um einen Varchar Typ handelt ist die Kovertierung in Interger nicht nötig/bzw. geht nicht.

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.
Planung ist die Ersetzung des Zufalls durch den Irrtum ;-)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

*** make your own tools (wishlist :: thx)
martin2002
Beiträge: 41
Registriert: Fr 31. Okt 2003, 02:16
Wohnort: Potsdam
Kontaktdaten:

Beitrag von martin2002 »

ah okay... hab ich bei meiner kurzen suche nicht gefunden.
dann macht das thema hier einfach zu oder weg.

Greets
Martin.
Planung ist die Ersetzung des Zufalls durch den Irrtum ;-)
Gesperrt