Verschiedene DB Views im selben Controller?

Hallo zusammen!

Ich bin noch ein absoluter Yii-Neuling und befinde mich momentan auch noch eher in der Planungsphase, allerdings stehe ich vor einem Problem, dass ich möglichst elegant und effizient lösen möchte:

ich möchte die selbe Operation (z.B. Anzeigen eines Mitarbeiters) mit unterschiedlichen Ansichten abhängig von der Rolle des Benutzers abhandeln.

Also der Benutzer X mit der Rolle X kann die Felder a,b,c und d eines Mitarbeiters sehen, während Benutzer Z mit der Rolle Z nur die Felder a und b sehen darf. Und das Ganze geht dann bei der Bearbeitung etc. noch weiter…

So eine Berechtigungsvergabe auf Spaltenebene wollte ich durch Views in der Datenbank realisieren, allerdings möchte ich nach Möglichkeit nicht für jeden DB-View eine eigene MVC Struktur erstellen.

Für jedes Feld z.B. im View (MVC nicht DB) ein if-Statement einfügen, das prüft ob der Benutzer die Rolle XY hat und das Feld dann anzeigt oder nicht anzeigt, finde ich auch etwas umständlich.

Hat jemand von euch eine gute Idee dazu??

Evtl. zwar für jeden DB-View ein eigenes Model, aber einen einheitlichen Controller, der auf dem Superset der Daten basiert oder sowas?

Bin für jeden Vorschlag offen!  :)

Vielen Dank schonmal,

yoshi

Hi und willkommen. :)

Klingt kompliziert. Spontan fällt mir dazu nur RBAC ein. Keine Ahnung, nach welchen Kriterien du entscheidest, wer welche Spalten sehen darf. Und wieviele Rollen es gibt. Aber wenn du eine Operation oder eine Tätigkeit (task) mit einer geschickt gewählten Geschäftsregel kombinierst, solltest du die entscheidung, was anzuzeigen ist, geschickt in RBAC auslagern können.

Um die Prüfung checkAccess() im View wirst du daber nicht rumkommen. Irgendwie musst du ja entscheiden, was angezeigt werden soll und was nicht. Außer du machst für jede Rolle einen eigenen View und entscheidest im Controller, welcher gerendert werden soll.

Hallo,

vielen Dank erstmal für deine Antwort!

RBAC wollte ich sowieso verwenden, ich weiß allerdings noch nicht so genau, wie ich das dann am elegantesten damit löse. ich werde erstmal schauen und ausprobieren und anschließend weiter fragen etc.  ;)

Schönen Gruß

EDIT für Interessierte:

Das Grundprinzip hinter diesem Thema wird auch in diesem Thread http://www.yiiframew…pic,1291.0.html diskutiert. Ich hoffe da kommt noch eine hübsche Lösung raus!  :)