Datensicht eingrenzen, abhängig von Benutzer

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

  • Datensicht eingrenzen, abhängig von Benutzer

    Hallo!

    Ich plane gerade eine Art Memberbereich, in welchem die Benutzer Daten erfassen und bearbeiten können. Die Zugriffsrechte auf die einzelnen Tabellen werden über Rollen den Benutzern zugewiesen. In den einzelnen Rollen sind jeweils die einzelnen Rechte pro Tabelle hinterlegt (Read, Insert, Modify, Delete). Dies regelt den Zugriff auf Tabellenebene, soweit so gut.

    Nun soll es allerdings pro User und Tabelle möglich sein, Filter zu definieren, welche die Sicht auf die Daten noch weiter einschränken.

    Beispiel:
    User A hat Zugriffsrecht zum Bearbeiten von News (über Rollen zugeteilt). Allerdings darf er nur die News der Region X sehen und bearbeiten. Region ist in der Tabelle als Feld hinterlegt.

    Nun war meine Idee eigentlich, pro Tabelle und User noch Filterkriterien zu hinterlegen, welche miteinander verknüpft werden können (AND / OR). Also es sollte auch möglich sein, dass User A News von Region X und Y sehen bzw. bearbeiten kann.

    Hat jemand von euch schon mal so was versucht? Wenn ich dran denke, dass ich das alles ausprogrammieren muss, dann wird mir schon beinahe schlecht, vorallem wenn ich anhand der (theoretisch) undendlichen Anzahl definierbaren Filter pro User und Tabelle automatisch einen Query mit all den Filtern gesetzt generieren muss.

    Ein anderer Ansatz wäre auch gewesen, dynamisch jeweils eine VIEW zu generieren, die nach der Sitzung wieder gelöscht wird, aber MySQL unterstützt in der gegenwärtigen Version ja noch kein CREATE VIEW.

    Ich weiss nicht wie ich das am idealsten lösen könnte, es soll halt flexibel sein, deshalb auch die frei definierbaren Filter.


    Ich hoffe jemand kann mir hier weiterhelfen :-)
    Besten Dank!

    Shoka

  • #2
    hm, ehrlich gesagt blick ich bei deinem Konzept nicht ganz durch. Einmal darf der User was schreiben/ändern, andermal nicht.

    Erstell doch einfach verschiedene Gruppen, die eine darf nur X bearbeiten, die andere nur Y.
    Ist der User in beiden eingetragen, darf er beide bearbeiten.

    byez - sagg
    mfg - sagg

    Kommentar


    • #3
      Danke für deine Antwort.

      Mein Ansatz den ich verfolge, ist der, dass ich anhand der gesetzten Filter den Query generiere, so dass nur noch die Daten, die effektiv für den Nutzer gedacht sind, vom Server zurückgegeben werden.

      Hier ein Szenario:

      User A soll die Möglichkeit haben, News zu bearbeiten, allerdings nur von Region X und Y:

      Ihm zugeteilte Rolle (News bearbeiten):
      --------------------------------------------------
      Diese Rolle regelt den Zugriff auf der Tabellenebene.


      Tabelle Read Insert Modify Delete
      -----------------------------------------------------
      News Yes Yes Yes Yes


      Zusätzlich hat er den Filter noch wie folgt gesetzt:
      (die Filter werden in einer anderen Tabelle gespeichert)

      Tabelle Feld Wert Type
      -------------------------------------------
      News Region X AND
      News Region Y


      so sollte der Query etwa so generiert werden:

      SELECT Feld1, Feld2, ... FROM news WHERE Region='X' AND Region='Y';


      Klar, eine andere Möglichkeit wäre wenn ich sage, OK, der User hat ja Berechtigung auf die Tabell News, also schicke ich ihm mal alle Records. Ich kann dann wenn er einen Record anklickt noch entscheiden, ob er darf oder nicht. Aber somit lädt er sich immer viel zu viel Zeug vom Server runter, welcher gar nicht für ihn bestimmt ist.


      Greetz
      Shoka

      Kommentar

      Lädt...
      X