Zugriffsrechte

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zugriffsrechte

    Also, ich habe 3 Tabellen, user, module, gruppen.

    Der User loggt sich also ein, kriegt die Rechte aus der Gruppentabelle bzw. der Zeile zu dessen Gruppe er gehört.

    Die Rechte werden in der Session gespeichert.
    Wenn ich nun ein Modul aufrufe möchte ich die Rechte so wie gefolgt abfragen.

    Macht das Sinn so? Ist das effektiv? Performant?
    Grundlegend gefragt, gehts besser oder einfacher?

    PHP-Code:
    <?
    // module id test
    $module_id = 23;

    // read all/ write all / delete all / edit all / read own / write own / delete own / edit own / . / module ID /
    $rights[] = 10111111.1;
    $rights[] = 10111101.4;
    $rights[] = 10011101.23;

    reset($rights);
    while (list($key, $val) = each($rights)) 
    {
        $temp = explode(".",$val);  
        if($temp[1] == $module_id)
        {
               $mod_rights[] = substr($temp[0],0,1); // read all
               $mod_rights[] = substr($temp[0],1,1); // write all
               $mod_rights[] = substr($temp[0],2,1); // delete all
               $mod_rights[] = substr($temp[0],3,1); // edit all
               $mod_rights[] = substr($temp[0],4,1); // read own
               $mod_rights[] = substr($temp[0],5,1); // write own
               $mod_rights[] = substr($temp[0],6,1); // delete own
               $mod_rights[] = substr($temp[0],7,1); // edit own
        }
    }

    if ($mod_rights[0] == 1)
    { echo "You can read all!\n";} else { echo "You can't read all!\n";}

    if ($mod_rights[1] == 1)
    { echo "You can write all!\n";} else { echo "You can't write all!\n";}

    if ($mod_rights[2] == 1)
    { echo "You can delete all!\n";} else { echo "You can't delete all!\n";}

    if ($mod_rights[3] == 1)
    { echo "You can edit all!\n";} else { echo "You can't edit all!\n";}

    if ($mod_rights[4] == 1)
    { echo "You can read your own!\n";} else { echo "You can't read your own!\n";}

    if ($mod_rights[5] == 1)
    { echo "You can write your own!\n";} else { echo "You can't write your own!\n";}

    if ($mod_rights[6] == 1)
    { echo "You can delete your own!\n";} else { echo "You can't delete own!\n";}

    if ($mod_rights[7] == 1)
    { echo "You can edit your own!\n";} else { echo "You can't edit own!\n";}
    ?>

  • #2
    Drei Dinge fallen mir auf:

    1. Du sprichst von Gruppen, hast aber keine Gruppenflags (read group, write group, delete group, edit group). Ist das Absicht?

    2. Warum unterscheidest du zwischen write, edit und delete? Vielleicht verstehe ich es besser, wenn du mal Beispiele aus deiner Anwendung nennst, wo der Unterschied eine Rolle spielt.

    3. Warum nicht die Werte für die Flags so wählen, dass aus jeder möglichen Summe von Flags eindeutig abgeleitet werden kann, was da summiert wurde und damit welche Rechte bestehen?

    Du merkst worauf ich hinaus will: Das Unix-Rechtesystem.

    Kommentar


    • #3
      Effektiv finde ich es nicht. Eventuell braucht ein Modul Programmierer auch mal ein anderes Recht als die schon vorgegeben

      Wenn du umbedingt mit Sessions arbeiten willst dann solltest du dir vielleicht Sachen wie serialize anschauen
      Zuletzt geändert von Floriam; 03.05.2005, 13:36.
      PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

      Kommentar

      Lädt...
      X