Einzelnen Beitrag anzeigen
Alt 14.09.2008, 21:13  
dr.e.
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo #Avedo,

gleich vorneweg: Rollen und Rechte sind nicht gleich, Rollen und Gruppen auch nicht! Dieser Fehler wird leider viel zu oft begangen.

Noch mal zur Verfahrensweise: Rechte definieren die Sichtbarkeit von Objekten, Rollen definieren, welche Aktionen auf Objekte, auf die ein Benutzer Rechte hat ausgeführt werden dürfen. Das 1:1 zu koppeln raubt dir die zweite Bewertungsebene, die du gerade bei mandantenfähigen Anwendungen dringend brauchst.


Zitat:
Also in der Tabelle...
Ok, du hast mit UML noch nicht viel zu tun gehabt. Das Diagramm zeigt keine Tabellen, sondern lediglich Objekte und deren Beziehung inkl. der Qualität der Beziehung. Ich empfehle dir schnellstens ein UML-Buch zu lesen, das hilft ungemein.


Zitat:
Leider verstehe ich nicht, welche Rolle nun umgtPermissionsSet bzw. umgtApplikation haben.
Das PermissionSet ist nochmal eine Abstraktion, die du streng genommen auch weglassen könntest. Die Idee dahinter ist, dass Teile einer Rolle auch generisch für andere Rollen definiert werden können. Fakt ist jedoch, dass sich eine Rolle implizit aus einem Satz an "Aktionserlaubnissen", den Permissions, zusammensetzt. Diese definieren, dass z.B. ein Menüpunkt "Löschen" angezeigt wird. Hat ein Benutzer also eine entsprechende Rolle, kann er Objekte, auf die er auch Rechte besitzt, löschen. Falls nicht, sieht er zwar die Objekte, kann aber diese nicht löschen. Gestaltest du das generisch genug, hast du ein recht probates Mittel, eine Backend-Applikation nahezu in alle möglichen Konfigurationen zu versetzen.


Zitat:
Leider sehe ich auch keine Möglichkeit einem Nutzer direkt bestimmte Rechte zu geben, sondern man muss sehr sehr viele verschiedene Rollen zur Verfügung stellen, um alle Rechte abzudecken.
Hier vermischst du wieder Rechte und Rollen. Um einem Benutzer alle möglichen Aktionen auf alle möglichen Objekte ausführen lassen zu können, muss er lediglich Rechte auf alle Objekte und eine Rolle besitzen, die alle ausführbaren Aktionen beinhaltet. Das mag zunächst nach viel Arbeit klingen, es bietet im Nachhinein jedoch eine sehr große Flexibilität.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten