Umgt - Role/Group

Das Forum soll der Ablage von Lösungen für immer wieder auftauchende Problemstellungen dienen. // This forum contains solutions to problems that frequently occur.
Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Umgt - Role/Group

Beitrag von dr.e. » 05.08.2011, 19:26:01

Hi Ralf,
Fehlt da nicht ein loadRoleByName() ? Oder sollen Rollen nur über die Id angesprochen werden?
Nein, Rollen können natürlich auch per Name angesprochen werden. Soll ich das dahingehend erweitern?
Warum wird hier strpos verwendet um die Condition zu finden? Denn Die Condition "role" wird vor "not-role" getestet, und da "role" in "not-role" vorkommt, wird die falsche Condition verwendet!
Das hatte ich nicht bedacht, sondern strpos() aus Performance-Gründen ausgewählt.
Option a: Wir ändern das auf einen Stringvergleich
Option b: Wir müssen aufpassen, dass die Conditions in einer bestimmten Reihenfolge hinzugefügt werden, was aber unflexibel ist.
Ich würde das einfach in diesem Zug auf einen direkten String-Vergleich umbauen, dann sind wir sicher. Reihenfolgen sind an dieser Stelle nicht gut.
P.s.: Erbitte Erlaubnis diese Condition ins SVN einchecken zu dürfen. (Habe vorerst einfach die Reihenfolge der Conditions geändert)
Natürlich! :) Ist ja eine Bereicherung des Frameworks.

PS: Ich baue am Wochenende eine erste Version von 1.14-RC1 und update die Webseite.
Viele Grüße,
Christian

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Umgt - Role/Group

Beitrag von Screeze » 05.08.2011, 19:45:05

Nein, Rollen können natürlich auch per Name angesprochen werden. Soll ich das dahingehend erweitern?
Jap denke das wäre praktisch.
Ich würde das einfach in diesem Zug auf einen direkten String-Vergleich umbauen, dann sind wir sicher. Reihenfolgen sind an dieser Stelle nicht gut.
[...]
Natürlich! :) Ist ja eine Bereicherung des Frameworks.
Beides im SVN.
PS: Ich baue am Wochenende eine erste Version von 1.14-RC1 und update die Webseite.
Sehr gut.

P.s.: Bin nächste Woche erst mal nicht da, CCCamp ruft, fahr schon am Montag hin :)

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Umgt - Role/Group

Beitrag von dave » 06.08.2011, 17:53:37

HiHo!

Also ich muss sagen, dass ich mit dem Rechte-Rollen-Gruppen-System des UMGT vollends zufrieden bin. Logisch, ich habe auch einige Zeit benötigt, bis ich es verstanden habe, aber nun läuft das reibungslos.

Bei mir ist der Überblick wichtig. Daher habe ich mir eine Excel-Tabelle erstellt, über die ich den vollen Überblick habe und auch behalte ;). Bild dazu gibts im Anhang.

Eine vollständige Umstrukturierung des Systems würde mir im Moment echt gar nicht passen. Dazu müsste wieder einfach viel zu viel geändert werden, was einfach total ungünstig ist ;)
Dateianhänge
umgt-permissions.jpg
Rechte-Rollen-Gruppen
umgt-permissions.jpg (141.09 KiB) 2532 mal betrachtet

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Umgt - Role/Group

Beitrag von Screeze » 06.08.2011, 18:15:35

Aber "Group" beispielsweise verwendest du auch nicht, richtig?

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Umgt - Role/Group

Beitrag von dave » 06.08.2011, 18:24:02

Richtig, weil die ja auch nichts "können".

Sorry, habe das eigentliche Problem jetzt erst vollständig verstanden :mrgreen:

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Umgt - Role/Group

Beitrag von Screeze » 06.08.2011, 18:32:20

Eben ;)
Rollen und Gruppen können theoretisch zusammengefasst werden...

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Umgt - Role/Group

Beitrag von dr.e. » 06.08.2011, 23:24:27

... sofern man meine Unterscheidung treffen möchte zwischen Sichtbarkeit und Funktion. Ich würde das aber gerne weiter anbieten (siehe Argumentation oben), nur die jeweiligen Bereiche so gestalten, dass sie auch als "flaches" ACL-Konzept eingesetzt werden können. Dann sind sowohl dave's Anforderungen umzusetzen als auch erweiterte Anforderungen aus Ralf's und meiner CMS-Implementierung.
Viele Grüße,
Christian

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Umgt - Role/Group

Beitrag von dr.e. » 06.08.2011, 23:47:38

@Ralf: Methode loadRoleByName() habe ich hinzugefügt. Deine Erweiterung mit den Rollen funktioniert auch bestens. :)
Viele Grüße,
Christian

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: Umgt - Role/Group

Beitrag von MrNiceGuy » 07.08.2011, 07:59:21

Nungut, da Christian so "versteift" darauf zu sein scheint hier auch noch eine für meine Begriffe überflüssige Hierarchie-Strukturebene implementiert zu lassen bleibt uns wohl nichts weiter übrig, als die Gruppen sein zu lasen und für uns die Rollen in Gruppen "umzubennen" :)

@Christian: Ich lese immer wieder von dir etwas wie "Unterscheidung von Sichtbarkeit und Funktion", mir erschließt sich der Sinn dahinter jedoch nach wie vor nicht. ich bin bei dem Studium der Doku damals schon ins Stocken geraten und haben es nicht verstanden :( Ich glaube auch, dass genau das der Punkt ist, um den wir hier herumtänzeln und von denen - mit Ausnahme von dir - niemand überzeugt ist und/oder keiner verstanden hat, wozu das so wichtig/sinnvoll sein könnte!?
Versteh das jetzt bitte nicht falsch, ich will dich hier nicht diskreditieren. Mir fehlt lediglich eine für mich nachvollziehbare Erklärung, weshalb ein Nichtssagendes Element eine Verwendung finden sollte. Es muss ja scheinbar irgendeinen Grund geben!?
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Umgt - Role/Group

Beitrag von dr.e. » 07.08.2011, 13:44:13

Hallo Lutz,

wenn es so erscheint, dass ich darauf "versteift" bin, dann bitte ich um Entschuldigung. Ich behaupte jedoch einfach, dass es daran liegt, dass sich - wie du auch schon sagtest - der Sinn noch nicht erschließt. Die gute Nachricht ist: es gibt ihn! ;)

Grundsätzlich ist das UMGT-Modul hinsichtlich seines Anspruches ein Modul, das in allen Lebenslagen einer Applikation eingesetzt werden kann und du jeden Anwendungsfall abbilden kannst, den eine solche notwendig macht.

Unter http://wiki.adventure-php-framework.org ... nen-Modell hatte ich mal angefangen, die Konzepte dazulegen. In meinem vorherigen Beitrag habe ich versucht, es an einem einfachen Beispiel nochmals klar zu machen. Vielleicht besprechen wir mal ein weiteres Beispiel:

Nehmen wir an, du hast eine Applikation, an der mehrere Personen arbeiten. Dies sind Administratoren, die alle Funktionen haben und alle Elemente entsprechend den Funktionen bearbeiten können, einfache Redakteure, die die Objekte ihrer Filiale ändern können und Vertriebler, die einfach nur die Inhalte einesehen und Rabatt-Sätze für alle Filialen in ihrer Region pflegen können.

Drücke ich das Beispiel in Personen aus, sind das bei 10 Filialen, 3 Gebieten und einem Administrator:
  • 10 Filial-Redakteure
  • 3 Vertriebler
  • 1 Administrator
Die verwalteten Objekte in der Datenbank sind
  • x Produkte
  • y Produkt-Varianten in Bezug auf eine Filiale
  • z Produkte als Stammdaten
  • n Filialen
Du möchtest nun hinsichtlich des Rechte-Konzeptes - wie oben angesprochen - nicht allen Redakteuren Zugriff auf alle Funktionen und schon garnicht auf alle Daten geben. Ein Vertriebler soll noch weniger sehen und noch weniger verändern können. Dass der Admin alles sehen und ändern darf ist dabei klar.

Wenn du dir nun überlegst, wie du das abbilden kannst, sprechen wir von zwei Bereichen:
  • Sicherstellen, dass ein Benutzer nur derjenigen Daten sieht, die er auch sehen darf.
  • Sicherstellen, dass ein Benutzer nur diejenigen Aktionen ausführen darf, zu denen er auch berechtigt ist.
Diese Unterscheidung, bzw. diese zwei Nuancen hast du sicher nicht in jeder Applikation. Gehst du jedoch vom oben formulierten Anspruch aus, so muss das UMGT das auch abbilden können. Aus meiner Erfahung weiß ich, dass diese Trennung insbesondere im Bereich von international eingesetzten CMS-Installationen dringend notwendig ist, sonst hast du schnell den Fall, dass ein indischer Redakteur das global eingesetzte Impressum ändert, da Sichtbarkeit und Funktion gleich gesetzt wird.

Wie würde ich das obige Beispiel umsetzen?
  • 3 Rollen für Redakteur, Vertriebler und Admin
  • n Permissions für die n Funktionen, die auf den Objekten (siehe oben) angewendet werdendarf
  • 10 Gruppen und 14 Benutzer
Welche Objekte der Datenbank ein Benutzer sehen darf, bilde ich über die Sichtbarkeits-Berechtigungen ab. Damit stelle ich sicher, dass der Redakteur der Münchner Filiale nur seine Produkte sehen darf. Exakt so grenze ich den Hamburger Redakteur von wiederum dem Münchner ab.

Hinsichtlich der Funktionen trenne ich wie folgt auf:
  • Bearbeiten des Rabatt-Satzes
  • Bearbeiten der Filial-Daten
  • Bearbeiten der Produkt-Daten
Damit habe ich die Möglichkeit, den Benutzern jeweils nur die Aktion zur Verfügung zu stellen, die er auch hat.

Ist jetzt etwas klarer geworden, dass es tatsächlich mehrere Nuancen gibt?

Was - wie oben besprochen - dem UMGT noch fehlt sind Nuancen der Sichtbarkeits-Berechtigung wie Lesen, in Beziehung setzen, Bearbeiten, Löschen, die Zuordnung von Permissions direkt an Rollen und die Zuweisung von Rollen zu Gruppen. Dann ist alles abgedeckt, was du zur einfachen Abbildung meines Beispiels brauchst. Aktuell kannst du das Beispiel auch schon abbilden, es sind aber noch einige Kniffe bei der Anlage der Permissions notwendig.
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Umgt - Role/Group

Beitrag von dave » 09.08.2011, 17:53:11

Nochmal ein wenig Diskussionsstoff ;)


Und zwar möchte ich mir eine zusätzliche Permission geben, die niemand anderes hat und auch nicht benötigt. Da ich Usern nur eine Rolle und den Rollen dann ein PermissionSet zuweise, muss ich neben der Permission auch noch ein PermissionSet und eine Role erstellen.

Ich fände es einfacher, wenn man bestimmten Usern direkt ohne den "Umweg" -> Role -> PermissionSet eine Permission zuweisen kann.

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Umgt - Role/Group

Beitrag von Megger » 09.08.2011, 17:55:11

Jep, davon rede ich auch schon die ganze Zeit :D
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Umgt - Role/Group

Beitrag von dr.e. » 09.08.2011, 21:45:25

Das könnte man natürlich auch einführen, macht das Daten-Modell aber noch einen Ticken komplexer. --> ist notiert.

Trotzdem die Nachfrage: ist die oben skizzierte Vorgehensweise nun klar? Mir ist wirklich wichtig, euch die Ideen und Gedanken zu vermitteln, damit wir in der Diskussion alle von gleichen Voraussetzungen starten.
Viele Grüße,
Christian

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: Umgt - Role/Group

Beitrag von MrNiceGuy » 11.08.2011, 13:48:05

Was ich daraus nun verstanden habe ist im Grunde folgendes: Es gibt zwar gleiche Berechtigungen für verschiedene Personen wie z.B. das Editieren von Artikeln. Da es aber in einem Multi-Plattform-System wie z.B. einem Shop für mehrere Klienten nicht möglich sein darf, dass der Administrator von Shop A die Artikel des Shops B editieren darf muss hier scheinbar eine Unterscheidung getroffen werden!?

Ansich verstehe ich das nur habe ich bislang nie die Gruppen für derartige Dinge genutzt sondern aus der Anwendung heraus realisiert und den Usern dann trotzdem die gleichen Berechtigungen gegeben!?

Aber mag auch sein, dass ich das jetzt immer noch nicht so verstanden habe. Eventuell ist die aktuelle Implementierung im APF schuld daran, da ich mir immer wieder vor Augen führe, dass die Gruppen im UMGT aktuell NULL Bezug zu irgendwas haben (außer zum jeweiligen User). Entsprechend wäre eine Implementierung innerhalb der Anwendung die Gruppe für die "Sichtbarkeit" zu missbrauchen ebenso unschön wie meine bisherigen, proprietären Lösungsansätze!? *confused*
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Gant
Beiträge: 21
Registriert: 27.05.2011, 21:58:16

Re: Umgt - Role/Group

Beitrag von Gant » 14.08.2011, 21:47:06

MrNiceGuy hat geschrieben: Ansich verstehe ich das nur habe ich bislang nie die Gruppen für derartige Dinge genutzt sondern aus der Anwendung heraus realisiert und den Usern dann trotzdem die gleichen Berechtigungen gegeben!?
Wenn du die gleichen Berechtigungen vergeben hast, dann hast du aber nicht den gewünschten Schutz vor dem Ändern "fremder" Daten. Oder wie hättest du Christians Beispiel umgesetzt?

Ich denke ich habe nun einigermaßen das Rollen-/Gruppenkonzept verstanden. Gruppen scheinen da offenbar einfach weniger Anwendungsgebiete zu haben, sodass man sie oft wirklich einfach weglassen kann. Was ich dann aber mit meinem neu erworbenen Verständnis nicht nachvollziehen kann ist die Zuweisung von Rollen zu Gruppen. Wieso sollte man das machen wollen?

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast