Rechte-Vergabe in der front_content.php ?

Gesperrt
Condor
Beiträge: 107
Registriert: Mo 14. Mär 2005, 17:31
Kontaktdaten:

Rechte-Vergabe in der front_content.php ?

Beitrag von Condor »

Tach zusammen :-),

ich habe jetzt diesen Teil in der front_content.php-Datei:

Code: Alles auswählen

if ($auth->auth["uid"] != 'nobody') {
    $sql = "SELECT funktion FROM con_phplib_auth_user_md5 WHERE user_id = '".$auth->auth["uid"]."'";
    $db->query($sql);
    if ($db->next_record()) {
        // gruppe gefunden
        $meine_funktion = $db->f("funktion");
        if ($meine_funktion == "PR") {
            $idcat = 181;
        }
        
        if ($meine_funktion == "PS") {
            $idcat = 210;
        }

        if ($meine_funktion == "GE") {
            $idcat = 246;
        }

        if ($meine_funktion == "OM") {
            $idcat = 248;
        }
        
        if ($meine_funktion == "KO") {
            $idcat = 299;
        }
        
        if ($meine_funktion == "WW") {
            $idcat = 300;
        }
        
        if ($meine_funktion == "GA") {
            $idcat = 301;
        }
        
        if ($meine_funktion == "KK") {
            $idcat = 302;
        }
        
        if ($meine_funktion == "SV") {
            $idcat = 303;
        }
        
    }
Jetzt zu meinem Problem, was ich vielleicht schon sogar vor einiger Zeit hier gepostet hab. Kann mich aber net mehr dara erinnern, also schlagt mich bitte net ;-)
Wenn ich jetzt angemeldet bin per Login-Modul, müsste doch der Zeiger auf dem Datensatz des aktuell eingeloggten Users liegen oder ? Ich habe in der oben genannten Tabelle eine zusätzliche Spalte Gruppe (Gruppe 1, Gruppe 2 usw.). Jetzt mal ein Beispiel: Ich habe einen Button auf meiner Seite, wenn er angeklickt wird soll geprüft werden ob der aktuelle User aus der Gruppe 1 oder Gruppe 2 ist. Wenn er aus Gruppe 1 ist dann kommt "Hallo" oder eine andere Aktion, ist er aber Gruppe 2 oder sonst eine andere dann kommt "Kein Zugang für Sie" oder sowas. Sollte das auch in die "front_content.php" oder muss das wo anders hin? Vielleicht könnte emergence mir etwas helfen, du müsstest ja langsam etwas mit meinen Problemen vertraut sein :-) Ich hoffe das mir überhaupt jemand Rat erteilen kann :-) Bis dann.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Jetzt zu meinem Problem, was ich vielleicht schon sogar vor einiger Zeit hier gepostet hab. Kann mich aber net mehr dara erinnern, also schlagt mich bitte net
Machen wir nie, wir verweisen auf die Suchfunktion und die Möglichkeit, nach allen Beiträgen eines Nutzers zu suchen - oder Du klickst unter Deinem Eintrag auf "Profil" und wählst "Alle Beiträge des Nutzers".
Wenn ich jetzt angemeldet bin per Login-Modul, müsste doch der Zeiger auf dem Datensatz des aktuell eingeloggten Users liegen oder ?
Wenn Du mit Zeiger die Information über den angemeldetetn Nutzer meinst, den kann man mit $auth->auth["uid"] ermitteln.
Jetzt mal ein Beispiel: Ich habe einen Button auf meiner Seite, wenn er angeklickt wird soll geprüft werden ob der aktuelle User aus der Gruppe 1 oder Gruppe 2 ist. Wenn er aus Gruppe 1 ist dann kommt "Hallo" oder eine andere Aktion, ist er aber Gruppe 2 oder sonst eine andere dann kommt "Kein Zugang für Sie" oder sowas. Sollte das auch in die "front_content.php" oder muss das wo anders hin?
Nun, so ein JS-Fenster wird es nicht geben (wie ich mal annehme, Du Dir vorstellst), da Du sonst dem JS-Skripts alle erlaubten Accounts mitteilen müsstest - die man dann natürlich auslesen kann.

Sagen wir mal, der Nutzer kommt auf eine Seite, für die er grundsätzlich berechtigt ist. Darauf befindet sich eine Schaltfläche, die ihn auf eine weitere Seite weiterleitet und hier befindet sich sinniger Weise ein Modul, welches die Berechtigung abfragt und entsprechenden Code ausgibt (d.h. nicht berechtigt: "Nö!" oder berechtigt: "Yo!"). Ist jetzt nur ein Beispiel, da Du von Button gesprochen hast - Du kannst das erwähnte Modul natürlich gleich auf die erste Seite setzen...

Zum JS-Fenster: Es wäre natürlich möglich, die Seite, die das Modul mit der Überprüfung enthält, über eine JS-Funktion zu öffnen - mit dem gewünschten Effekt (die Überprüfung erfolgt durch die Seite, nicht durch den Button).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Condor
Beiträge: 107
Registriert: Mo 14. Mär 2005, 17:31
Kontaktdaten:

Beitrag von Condor »

Hi,

danke erstmal für deine schnelle Antwort :-)

Zu 1: dann ist ja gut :-)
Zu 2: Ich meinte kein JavaScript :-) Sollte eh nur ein Bsp. sein. Irgendein Knopf erstellen und wenn man dann drauf klickt soll im nächsten Vorgang geprüft werden, so wie du es eigentlich beschrieben hast. Aber mein Problem ist z.B., ich weiss net welche Variablen ich nehmen soll, wegen Contenido als Bsp.:

Code: Alles auswählen

$auth->auth["uid"]
...hier befindet sich sinniger Weise ein Modul, welches die Berechtigung abfragt und entsprechenden Code ausgibt...
Wie soll das aussehen, welche Variablen soll ich benutzen ? Eigene oder brauche ich ausser Auth noch andere von Contenido ?

Ich hab da zwar rumgefummelt aber nix zustande bekommen, ich hab da kein Plan vll. bringst du mich auf den richtigen weg ? :-) Bis dann.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

mal was grundsätzliches zu $auth

wenn du diese tabelle um eigene felder(gruppe, funktion) erweiterst werden diese nicht automatisch in der $auth zur verfügung gestellt...

was in der variable gespeichert ist bekommst du über

<?php
print_r($auth);
?>

raus.

möchtest du zusätzliche werte dort speichern müsstest du die klasse conlib/auth.inc bzw local.php aufbohren...

und das ganze ist leider kein 5 minuten job...

deshalb hab ich dir das letzte mal geraten dies so zu selektieren.. in deinem fall müsstest du halt noch gruppe mit selektieren

Code: Alles auswählen

$sql = "SELECT gruppe,funktion FROM con_phplib_auth_user_md5 WHERE user_id = '".$auth->auth["uid"]."'"; 
und dann eine entsprechende if abfragen mit einbauen...
der code funktioniert in dem fall auch in einem modul...
(das mit der automatischen weiterleitung hingegen nur in der front_content.php)
*** make your own tools (wishlist :: thx)
Condor
Beiträge: 107
Registriert: Mo 14. Mär 2005, 17:31
Kontaktdaten:

Beitrag von Condor »

Hallo,

danke emergence. Ich wusste das du mir schon mal sowas geschrieben hast. Tut mir leid, aber ich sitze leider nicht jeden Tag dadran, da vergisst man manchmal sachen :-) In welche Datei soll jetzt deine Abfrage rein ? Oder soll ich ein eigenes Modul damit erstellen ? Bis dann.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Für Deinen Zweck in einem Modul (oder direkt im Layout, aber besser ist in einem Modul).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Condor
Beiträge: 107
Registriert: Mo 14. Mär 2005, 17:31
Kontaktdaten:

Beitrag von Condor »

Hi,

achso alles klar. Ich hab da aber noch ein Problem: Hab Contenido auf dem Webserver installiert, DB angelegt, Setup ausgeführt etc. Wenn ich mich jetzt bei Contenido anmelden möchte kommt diese Fehlermeldung:

Code: Alles auswählen

Fatal error: Call to undefined function: cinclude() in /home/htdocs/web9/html/cont/contenido/index.php on line 18
Das bezieht sich auf die Datei: "functions.i18n.php"

Was ist das denn wieder für ein Fehler ?
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

a) Hast Du die Konfigurationsdatei config.php gespeichert (müsste in contenido/includes liegen)?
b) Suche mal im Forum, dürfte was bekanntes sein.
c) Da es sich nicht um das eigentliche Thema handelt, mache ein neues Thema bei Installation auf.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Condor
Beiträge: 107
Registriert: Mo 14. Mär 2005, 17:31
Kontaktdaten:

Beitrag von Condor »

Hi,

hab ich gemacht. Keine Ahnung was das jetzt wieder ist. Lokal läuft es unf auf dem Server nicht.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Siehe c) und suche mal im Forum nach "undefined cInclude" (alle Wörter). Z.B.: http://www.contenido.org/forum/viewtopi ... 7139#47139

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Condor
Beiträge: 107
Registriert: Mo 14. Mär 2005, 17:31
Kontaktdaten:

Beitrag von Condor »

Hallo,

schon gut. Hab den Fehler schon gefunden, die config.php war irgendwie falsch, hab sie gelöscht und Setup nochmal ausführen lassen. Jetzt hab ich aber ein ganz anderes Problem: Hab alles laufen, DB hab ich eingefügt aber jetzt funktionieren manche Menüunterpunkte nicht mehr, obwohl lokal alles geht ?! Wenn ich dann in Contenido reingehe um den Artikel zu bearbeiten kommt ein "Internal Server Error". In der "errorlog" steht dann sowas:

Code: Alles auswählen

[15-Jun-2005 23:41:17] MySQL error 1044: Access denied for user: 'web9@localhost' to database 'usr_web9_1'
lock tables con_sequence write
[15-Jun-2005 23:41:17] lock() failed.
[15-Jun-2005 23:41:17] cannot lock con_sequence - has it been created?
[15-Jun-2005 23:41:17] MySQL error 1062: Duplicate entry '0' for key 1
Ne idee was man da machen kann ?
Condor
Beiträge: 107
Registriert: Mo 14. Mär 2005, 17:31
Kontaktdaten:

Beitrag von Condor »

Hallo,

ich bins nochmal. Diese Funktion in der front_content.php lässt mich nicht in ruhe :-) :

Code: Alles auswählen

if ($auth->auth["uid"] != 'nobody') { 
    $sql = "SELECT funktion FROM con_phplib_auth_user_md5 WHERE user_id = '".$auth->auth["uid"]."'"; 
    $db->query($sql); 
    if ($db->next_record()) { 
        // gruppe gefunden 
        $meine_funktion = $db->f("funktion"); 
        if ($meine_funktion == "PR") { 
            $idcat = 181; 
        } 
        
        if ($meine_funktion == "PS") { 
            $idcat = 210; 
        } 

        if ($meine_funktion == "GE") { 
            $idcat = 246; 
        } 

        if ($meine_funktion == "OM") { 
            $idcat = 248; 
        } 
        
        if ($meine_funktion == "KO") { 
            $idcat = 299; 
        } 
        
        if ($meine_funktion == "WW") { 
            $idcat = 300; 
        } 
        
        if ($meine_funktion == "GA") { 
            $idcat = 301; 
        } 
        
        if ($meine_funktion == "KK") { 
            $idcat = 302; 
        } 
        
        if ($meine_funktion == "SV") { 
            $idcat = 303; 
        } 
        
    } 
Das Problem ist, wenn jemand Mitglied in Gruppe 1 UND Gruppe 2 ist, muss er sich 2 mal in der DB befinden. Ich dachte ich erweitere die Tabelle mit Spalten wie Gruppe1, Gruppe2 etc. Dort steht dann Ja oder Nein. Wie müsste die oben genannte Abfrage dann geändert werden damit es nachschaut ob Ja oder Nein steht. Wenn Ja dann lässt er mich rein, wenn Nein dann verlinkt er auf eine Fehlerseite. Wie müsste ich das umändern ? Hab da was probiert aber nicht das richtige gefunden, wahrscheinlich benutze ich mal wieder falsche Variablen oder so.

Müsste diese Funktion:

Code: Alles auswählen

$sql = "SELECT funktion FROM con_phplib_auth_user_md5 WHERE user_id = '".$auth->auth["uid"]."'"; 
jetzt so aussehen:

Code: Alles auswählen

$sql = "SELECT gruppe1,gruppe2,gruppe3 FROM con_phplib_auth_user_md5 WHERE user_id = '".$auth->auth["uid"]."'"; 
Nur die Funktion würde dann nicht mehr stimmen. Sprich:

Code: Alles auswählen

$meine_funktion = $db->f("funktion"); 
        if ($meine_funktion == "PR") { 
            $idcat = 181; 
        }
würde nicht mehr gehen. Es soll ja so aussehen:

Code: Alles auswählen

if (gruppe1 == "JA") {
   $idcat = 181;
}
else
{
$idcat = 12; //Fehlerseite
}

if (gruppe2 == "JA") {
   $idcat = 182;
}
else
{
$idcat = 12; //Fehlerseite
}

...
Das war jetzt nur theoretisch gemeint.

Deshalb ist mir eure Meinung dazu wichtig. Bis dann.

ERGÄNZUNG:

Mir fällt gerade ein, das:

Code: Alles auswählen

if (gruppe2 == "JA") {
   $idcat = 182;
eigentlich egal ist, da ich in jedem Bereich ein anderes Login-Modul habe und im Login-Modul auf die entsprechende Seite verlinkt wird. Es müsst nur gebprüft werden ob Ja oder Nein in der DB steht. Wenn Ja dann lässt mich das Login-Modul rein, wenn Nein dann komme ich auf die Fehlerseite. Ich hoffe jemand weiss wie das alles gemeint ist :-)
Gesperrt