$auth Objekt

Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

$auth Objekt

Beitrag von Black Widow »

Hi!

Ich möchte wegen dem Problem mit den geschützen Bereichen ein Modul schreiben, das "manuell" checkt, ob ein User das nötige Recht für die aktuelle Seite hat oder nicht!
Jetzt wollte ich erstmal prüfen, ob überhaupt ein User eingeloggt ist oder nicht! Wenn ich dazu aber das "nobody" Attribut des $auth Objekts benutze ist es nicht immer eindeutig!
Ich dachte, wenn es true ist, ist keiner eingeloggt und bei false schon! Aber wenn ich mich auf einer anderen Seite einlogge und dann auf die geschütze gehe (auf der ich dass dan abfrage) bin ich angeblich nicht eingeloggt. Wenn ich mich allerdings direkt auf der geschützen Seite einlogge gehts!

Wozu ist dieses Attribut denn genau?
Bzw. ist der uname im $auth Objekt beim Wert "nobody" so eindeutig, dass man ganz sicher davon ausgehen kann, das niemand (z.B. mit dem Usernamen "nobody") eingeloggt ist?
Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

Beitrag von Black Widow »

Hab gesehen, dass man ja auch an die eingeloggte uid rankommt!
Dann frage ich jetzt auf $auth->auth["uid"] == "nobody" ab! Das müsste doch eindeutig sein!
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

Ja, denn die UID ist *immer* ein 32 Zeichen langer MD5-Hash ODER nobody. Das ist das einzig eindeutige Merkmal.
Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

Beitrag von Black Widow »

Danke!
hyperjojo
Beiträge: 102
Registriert: Fr 1. Nov 2002, 23:57
Kontaktdaten:

Beitrag von hyperjojo »

hi,

gibt es denn nur uname und uid, die ich abfragen kann?? oder könnte ich auch z.B. password oder gruppe rausbekommen??

bye und thx!


hyperjojo
ttb
Beiträge: 182
Registriert: So 26. Okt 2003, 19:54
Wohnort: Schwerin
Kontaktdaten:

Beitrag von ttb »

Jo, in der Tabelle <Prefix>phplib_auth_user_md5 steht auch in verschlüsselter Form das PW und die Permissions.
hyperjojo
Beiträge: 102
Registriert: Fr 1. Nov 2002, 23:57
Kontaktdaten:

Beitrag von hyperjojo »

hi,

das ist jetzt wieder zu hoch für mich...

wie könnte ich denn z.B. das PAssword zum aktuell eingeloggten User ausgeben lassen??

bye & thx!

hyperjojo
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

das pw wieder entschlüsseln ?
das geht nicht
ist ein md5 kodierter wert innerhalb von php
es gibt soweit ich weiss keine möglichkeit das wieder umzukehren...
Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

Beitrag von Black Widow »

Richtig!

Dafür ist MD5 ja entwickelt!
Durch die einfache Codierung und nahe zu unmöglicher Decodierung ist es als Speicherformat für Passwörter perfekt geeignet! Mit dem "Nach"teil (was ja aber eigentlich der Vorteil ist), dass man es nicht wieder in Klartext auslesen kann!
Aber um ein Passwort auf Richtigkeit zu checken braucht man das ja auch nicht! Einfach das eingegebene wieder codieren und mit dem hinterlegten vergleichen!

Black Widow
hyperjojo
Beiträge: 102
Registriert: Fr 1. Nov 2002, 23:57
Kontaktdaten:

Beitrag von hyperjojo »

hi,

wie sieht es jetzt z.B. mit der Gruppe aus??

Oder anders gefragt: Wie kann ich eine Abfrage machen

if ($usergruppe =="Redaktion") {
echo "Hier bekommst du einen Link nur für Redakteure";
}

Ist sowas über $auth möglich??? Oder muss ich eine SQL-Abfrage starten?? Wenn ja: Kann mir jemand die Abfrage posten??

thx!!!

JoJo
Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

Beitrag von Black Widow »

Hi JoJo!

Probier mal folgende SQL-Abfrage:

Code: Alles auswählen

$sql_checkGroupMember = "SELECT idgroupuser
                         FROM ".$cfg["tab"]["groupmembers"]."
                         WHERE  user_id = '".$auth->auth["uid"]."' AND
                                group_id = '".md5('grp_GRUPPENNAME')."';";
Du musst GRUPPENNAME durch Deine entsprechende Gruppe ersetzen, aber das grp_ muss in jedem Fall davor stehenbleiben. Also bei dem Gruppennamen Redakteure wäre es z.B. grp_Redakteure...

Sobald es ein Ergebnis gibt (das wäre dann die idgroupuser, die ist aber nicht von Bedeutung), ist der user Mitglied dieser Gruppe. Gibt es kein Ergebnis, dann halt nicht ... :)

Gruß,
Black Widow
hyperjojo
Beiträge: 102
Registriert: Fr 1. Nov 2002, 23:57
Kontaktdaten:

Beitrag von hyperjojo »

hi,

du hast den mysql_query() vergessen:

Code: Alles auswählen

					$sql_checkGroupMember = mysql_query("SELECT idgroupuser
                         FROM ".$cfg["tab"]["groupmembers"]."
                         WHERE  user_id = '".$auth->auth["uid"]."' AND
                         group_id = '".md5('grp_Redaktion')."';");
Dennoch funktioniert es nicht.

Wenn ich $sql_checkGroupMember ausgebe, bekomme ich nur " Resource id #108", egal ob jemand eingeloggt ist oder nicht.

Damit kann ich wohl nix anfangen...

Noch jemand ne Idee???
Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

Beitrag von Black Widow »

Hä??

Also irgendwie hatte ich mir das auch anders gedacht ...
Versuchs mal so:

Code: Alles auswählen

$db_Connect = new DB_Contenido;
$sql_checkGroupMember = "SELECT idgroupuser 
                         FROM ".$cfg["tab"]["groupmembers"]." 
                         WHERE  user_id = '".$auth->auth["uid"]."' AND 
                                group_id = '".md5('grp_GRUPPENNAME')."';";

$db_Connect->query($sql_checkGroupMember);
if ($db_Connect->next_record())
{
	//User ist Mitglied der Gruppe! Mache irgendwas ...
}
Damit klappt es auf jeden Fall (falls ich jetzt keinen Syntaxerror übersehen hab)!

Gruß,
Black Widow
hyperjojo
Beiträge: 102
Registriert: Fr 1. Nov 2002, 23:57
Kontaktdaten:

Beitrag von hyperjojo »

hi,

uiiiiiii.....

ich hab ja gestern so dermaßen aufm Schlauch gestanden... ;)

Naja gut. Danke für die Lösung. Darauf wäre ich zwar auch nit gekommen, aber was ich von mir gegeben habe, war ja schon peinlich.. ;)

Ich glaube, ich muss mich mal bisschen ins objektorientierte Programmieren einarbeiten. Ohne das geht ja bei Contenido nit viel, wie es aussieht...

bye & thx!

hyperjojo
Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

Beitrag von Black Widow »

kein Prob ... :wink:

Programmiere auch erst seit knapp 3 Monaten PHP. Musste mich auch erst reinfinden ... :)

Gruß,
Black Widow
Gesperrt