individuelles Rechtesystem

dwex

Erfahrenes Mitglied
Hallo Leute,

ich zerbreche mir seit Tagen den Kopf wie ich ein Rechtesystem auf die Beine stellen kann.
Ich habe einen "internen" Bereich in dem es einige Seiten gibt welche individuell von verschiedenen Benutzer genutzt werden können/sollen.

Dazu habe ich das Script unter http://www.webmasterpro.de/coding/article/php-ein-einfaches-flexibles-rechtesystem.html gefunden und mir nachfolgenden Testquellcode gebastelt.
PHP:
<?php

if(pruefung(58,2)) { 
    echo "recht vorhanden";
} else {
    echo "recht nicht vorhanden";
}


function pruefung($benutzerrechte, $benoetigt) {
$rechte = array();
    for($i = 31; $i >= 0; $i--) { 
        $wert = pow(2, $i);
        if($benutzerrechte >= $wert) {
            $rechte[] = $wert;
            $benutzerrechte -= $wert;
        }
    }

    if(in_array($benoetigt, $rechte)) {
        return true;
    }
    else {
        return false;
    }
}
?>
Das ganze funktioniert auch ganz gut - nur kann ich damit ja maximal insgesamt 31 (= 32-Bit-Ganzzahl) verschiede Seiten/Rechte unterscheiden. Mein "interner" Bereich hat jetzt aber schon 30 Seiten und es werden, bis das ganze Fertig ist, wohl so an die 200 Seiten sein. Ich möchte einfach so eine Rechteverwaltung haben wie z.B. der Modified-Shop - hier kann man für jeden Nutzer bestimmte Rechte (sind so an die 60) individuell ankreuzen und somit bekommt der Benutzer dann nur Zugriff auf diese Seiten.

Hat jemand einen Idee wie man das (besser) lösen könnte.
Vielen Dank dafür im Voraus!
 
Hi,

kannst du das nicht über Gruppen lösen? Oder hat wirklich jeder Benutzer eigene Seiten, auf denen er was machen darf?

Grüße,
BK
 
Hallo Bratkartoffel,

ich habe mir auch schon überlegt ob ich das mit Gruppen machen soll und jeden User eine oder mehrere Gruppen zuweisen soll.

Im aktuellen Projekt ist das jedoch nicht möglich, da wirklich alle Benutzer andere rechte haben sollen. So müsste ich für jede Seite auch eine Gruppe anlegen - was meiner Meinung nach nicht sinnvoll wäre.

Hast du noch eine Idee?
 
Hi,

anders wirst du aber soweit ich das sehe keine Lösung finden. Integers sind halt nur mal 32 Bit breit, evtl könntest du auch auf 64 Bit gehen, da du aber 200 Seiten hast gehts in der Art nicht.
Ausser du arbeitest mit mehreren Zahlen, was das ganze aber sehr unleserlich und komplex macht.

Mein Vorschlag:
Jedem Benutzer in einer Liste alle Seiten eintragen, die er aufrufen darf. Evtl auch mit Pfad, also so in etwa:
Code:
/kategorie1/seite_a.php
/kategorie1/seite_b.php
test.php

Dann kannst du das auch einigermaßen automatisieren.

Grüße,
BK
 
Zuletzt bearbeitet:
Du kannst ja auch nen komplett anderen Mechanismus zum Speichern der rechte nehmen, zB nen array in das du halt für jeden Index entweder 0 oder 1 reinpackst. Dadurch hätteste ne beliebig skalierbare Lösung, oder?
 
Zurück