"Stored Function" für Rechteverwaltung

28dayslater

Mitglied
Zuerstmal meine Tabelle User:

ID | Name | Rechte

Die Rechte sind mit Bits gefüllt, beispielsweise: "1001".
Wenn ich jetzt sage, dass die mindest Rechte bei "0001" liegen, kann ich ja theoretisch über den Operator "&" prüfen, ob die nötigen Rechte vorhanden sind.

In PHP klappt das beim herumprobieren gut, jedoch wollte ich jetzt mit einer "Stored Function" in SQL dieses Problem lösen, um zum Beispiel die User herauszufiltern, die mindestens die Rechte "0001" haben und dafür nicht erst alle Datensätze in PHP zu verarbeiten.

Mein Ansatz funktioniert jedoch leider nicht. Er gibt mir nur die User zurück, die genau die selbe Bitfolge haben, wie das benötigte Recht.



Das ist die Funktion:
Code:
CREATE FUNCTION check_rights(have BIGINT, need BIGINT) RETURNS INT
BEGIN
         IF (have&need)=have THEN
                 RETURN 1;
         ELSE
                 RETURN 0;
         END IF;
END

So habe ich es angewandt:
Code:
SELECT * FROM users WHERE check_rights(rights,1001);


Wenn mir jemand eventuell sagen könnte, was ich falsch mache, oder ggf. falls es total daneben ist eine bessere Lösungsstrategie sagen kann?

Danke schon einmal im Vorraus, MFG 28dayslater
 

Neue Beiträge

Zurück