Rechte Vergabe

  • Guten Tag,


    ich wollte gerne in mein Interface Rechte Verteilen.


    Für jede Funktion ein Recht.

    Zb um Nachrichten zu erstellen.


    AllowCreateNewMessage


    Ich möchte gerne das Jeder User mehrer Rechte haben kann.

    Wie kann ich diese in der Datenbank abspeichern?


    Da ich in der Datenbank keine Rechte mit einem "Komma" trennen kann.




    Hoffe mir kann jemand helfen.


    Gruß!

  • Vergebe jedem Recht einen Wert


    Beispiel:


    Recht1 1

    Recht2 2

    Recht3 4

    Recht4 8

    Recht5 16

    Recht6 32

    Recht7 64

    Recht8 128

    Recht9 256


    Hat ein User Recht 2 und 6 speicherst du eine 34 in der DB, bei Recht1, Recht 2 und Recht3 eine 7


    Im Script fragst du dann ab


    if ($recht1 & $wertAusDB) // ergibt bei beiden Beispielen false

    oder

    if ($recht2 & $wertAusDB) // ergibt bei beiden Beispielen true

    oder

    if ($recht7 & $wertAusDB) // ergibt beim ersten Beispielen false, beim zweiten true

  • Mein Beispiel war:


  • Ist evtl ein Bisschen zu schwer für den Anfang.

    Man könnte auch eine Tabelle anlegen, die Benutzerrechte speichert.


    Tabellen Bsp.:

    Jetzt könnte man die Rechte wie zB "AllowReadBewerbungen" einen Wert zuweisen

    oder eine 3te Tabelle anlegen, um dessen ids zu nutzen.

    Mir gings hier aber nur um die Alternative.


    Gibt noch viel mehr Ansätze. Aber dazu musst Du einfach mal googlen ("php manage user permissions") und Dich für eins entscheiden.


    EDIT: zu @m.scatello Bsp - falls Du Dich dafür entscheidest: https://stackoverflow.com/ques…s-using-bitwise-operators

  • Ist evtl ein Bisschen zu schwer für den Anfang.

    Da ist doch nichts Schweres dran. Auf das Beispiel bezogen:

  • Ja, aber das setzt voraus, dass man versteht, was da binär passiert.

    Ok, man könnte es einfach so nutzen, ohne es zu verstehen. Man muss ja nicht alles wissen. Aber ich bin der Meinung, man muss den Code verstehen, den man nutzt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!