php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack (5) Themen-Optionen Thema bewerten
Alt 26.03.2009, 20:23  
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

Zitat:
Wie das APF aufgebaut ist, weiß ich nicht, aber sofern es rollenbasiert arbeitet, dürfte es nicht möglich sein, einzelnen Benutzern Rechte zuzuweisen.
Der Kern des APF "kennt" weder Benutzer, Rollen noch Gruppen. Das ist auch nicht der Fokus. Die oben beschriebene Funktion ist lediglich im mitgelieferten Modul "umgt" enthalten. Letzteres beherrscht Rollen und Gruppen.

Gruppen werden in der Regel zur Vergabe von Berechtigungen auf Objekte einer Anwendung verwendet, Rollen kommen dann zum Einsatz, wenn Berechtigungen auf das ausführen von Funktionen vergeben werden sollen. Zur Granularisierung und Wiederverwendbarkeit von "Funktionsberechtigungen" wurden Berechtigungsschemen eingeführt. Diese können wiederum mehrere Berechtigungen kapseln und werden selbst einer Rolle zugewiesen.
__________________
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
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.03.2009, 21:35  
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

@Manko
Vielen vielen Dank für den Link ist eine wirklich geniale Seite und ein toller Artikel.

Zurück zum Thema...

Wenn ich das richtig verstanden haben schließen sich Gruppen und Rollen nicht aus sondern ergänzen sich viel mehr. Rollen weisen einem Benutzer spezifische Rechte, die in einer Rolle gebündelt werden, zu. Moderatoren dürfen zum Beispiel lesen, bearbeiten und sperren, Administratoren an den Einstellungen pfuschen. Ein Nutzer kann zu einem bestimmten Zeitpunkt immer nur eine einzige Rolle und die damit verbundenen Rechte besitzen. Jedoch kann eine Rolle aus mehreren anderen Rollen zusammengesetzt sein. So kann man entweder "normaler" Benutzer oder Moderator oder Supermoderator sein aber nicht mehreres. Die Rolle des Supermoderators kann sich aber aus den verschiedenen einzelnen Moderator Rollen, die nur die Sperr und Editier-Rechte für ein einzelnes Forum vergeben zusammensetzen. Wie kommen dann aber Gruppen ins Spiel? Wenn ich das richtig verstanden habe sind Gruppen in einem Rollen basierten System eigentlich nur kleine Helferlein. Einige Benutzer eines Forums können sich zum Beispiel zu einer Arbeitsgruppe zusammenschließen. Arbeitet ein Nutzer nun innerhalb der Arbeitsgruppe, schreibt News oder Artikel, so erhält er durch eine Role festgelegte Rechte. Verlässt er den Bereich der Arbeitsgruppe nimmt er entweder wieder seine "Standard" Rolle ein oder wechselt in eine andere, durch eine Gruppe zugewiesene Rolle.

Ich hoffe ich habe alles richtig verstanden. Nun die Frage nach einem passenden Datenbank Schema. Ich muss also eine Tabelle für die Nutzer, eine für die Rollen, die Gruppen und eine für die Rechte haben. Wie kann ich es aber speichern, dass sich eine Rolle aus mehreren anderen zusammensetzt. Wie kennzeichne ich außerdem später wann man im Rahmen einer Gruppe aktiv ist?

MfG, Andy
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline   Mit Zitat antworten
Alt 26.03.2009, 22:54  
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

Zitat:
Wie kann ich es aber speichern, dass sich eine Rolle aus mehreren anderen zusammensetzt.
Rollen sollten eindeutig sein. Um diese flexibel konfigurierbar zu gestalten habe ich Permissions eingeführt, die über PermissionSets einer Rolle zugewiesen werden. So kannst du Funktionsberechtigungen beliebig einer Rolle zuweisen und diese damit definieren/konfigurieren.

Zitat:
Wie kennzeichne ich außerdem später wann man im Rahmen einer Gruppe aktiv ist?
Was meinst du mit aktiv? Ein Benutzer ist über eine Assoziation einer Gruppe zugeordnet. Gruppen der Rechteverwaltungsdomäne sind dabei jedoch etwas anderes wie eine Gruppe in einer Applikation (z.B. "Neigungsgruppe Schach"). Gemeinsam haben diese beiden jedoch trotzdem, dass ein Benutzer zu diesen Objekten per Assoziation zugeordnet ist.
__________________
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
Alt 26.03.2009, 23:05  
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

Nehmen wir an wir sind in einem kleinen Portal. Benutzer dürfen hier Kommentare zu Artikeln und News schreiben, Arbeitsgruppen erstellen, beitreten und verwalten, sowie Forenbeiräge verfassen. Alle Nutzer haben also die selbe Rolle. Jeder Benutzer kann beliebig vielen Arbeitsgruppen beitreten. In jeder Arbeitsgruppe sind neue Rollen definiert, von denen genau eine dem beigetretenen Nutzer zugewiesen wird. Hält sich dieser Nutzer nun im Bereich der Arbeitsgruppe auf, ist er in der durch die Gruppe zugewiesenen Rolle. Verlässt er den Bereich der Gruppe so nimmt der nutzer seine standrad Rolle ein. Ein Nutzer kann also mehrere Rollen haben, jedoch immer nur eine zum gleichen Zeitpunkt.

Ich fand an dieser Stelle auch das Beispiel aus dem von Manko geposteten Artikel sehr shön. Ein Mensch kann Morgens Verkäufer und Abends Kunde im gleichen Geschäft sein.

MfG, Andy
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline   Mit Zitat antworten
Alt 27.03.2009, 18:55  
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 Andy,

richtig, das alles hat jedoch nur mit Sichtbarkeit zu tun. Wenn ich die Gruppe "Fußball" nicht sehe, dann kann ich darauf auch keine Aktionen (Permissions!) ausführen. Nichtsdestotrotz gibt es einen Unterschied! Da ich gerade nicht die Zeit hab ein UML zu malen, kurz den Aufbau zu deinem Beispiel:

  • Entity: Arbeitsgruppe
  • Entity: Gruppe (für das Umgt)
  • Entity: Benutzer
Um einer Gruppe bezutreten, würdest du eine Assoziation zwischen einem Benutzer oder seiner Organisationsgruppe und der Arbeitsgruppe aufbauen. In Kombination mit seiner Rolle kann er dann Aktionen starten oder nicht. Ist er beispielsweise ein Premium-Account (siehe XING), so hat er mehr Permissions, sieht jedoch die gleiche Arbeitsgruppe. Hierzu sind Rollen da!


Zitat:
Ich fand an dieser Stelle auch das Beispiel aus dem von Manko geposteten Artikel sehr shön. Ein Mensch kann Morgens Verkäufer und Abends Kunde im gleichen Geschäft sein.
Das mag schon sein, nur du kannst nicht WELT modellieren, sondern nur einen Domäne!

Cheers,
Christian
__________________
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
Alt 27.03.2009, 23:23  
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

Natürlich kann man nicht WELT modellieren, jedoch muss es auch die möglichkeit geben zwischen verschiedenen Situationen zu unterscheiden. Als Administrator möchte ich ja auch nicht die ganze Zeit mit ner geladenen Waffe durch die Gegend laufen. Also bewege ich mich, wenn ich eingeloggt bin als Supermod und kann mir dann, wenn ich Einstellungen am System vornehmen möchte die Rechte eines Admins geben. Ähnlich funktioniert es ja auch bei Unix Systemen. Dort wird auch niemand bis unter die Zähne mit Rechten bewaffnet auf das System losgelassen. Für Änderungen direkt am System muss man erst per Root-Passwort bestätigen. Darum ging es mir.

Den zweiten Fall betreffend glaube ich, dass es auch bei Xing so ist, dass der Gründer einer Gruppe höhere Rechte besitzt als ein beigetretenes Mitglied. Außerhalb der Gruppe gehören sie trotzdem nur der großen Masse an Usern an und haben auch die gleichen Rechte.

Ich versuche also momentan noch einen geeigneten Mittelweg zu finden, um diese Probleme zu verinigen.

MfG, Andy
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline   Mit Zitat antworten
Alt 28.03.2009, 14:52  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Wenn möglich solltest du den Admin eh ganz abtrennen und mit einem extra Login versehen, einfach aus Sicherheitsgründen (e.g. Sessionhijacking, SQL-Injection). Was du im Adminpanel tust hat meistens eh nichts damit zu tun was sonst noch passiert, lässt sich also recht gut kapseln.
Wo ich grade dabei bin: IMO sollte selbst ein Admin keine direkte unbegrenzte Macht auf die DB haben, insgesamt gehören Berechtigungen kontrolliert und niemals undeutlich formuliert.
__________________
Phoscur ist offline   Mit Zitat antworten
Alt 28.03.2009, 17:27  
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

Zitat:
Ich versuche also momentan noch einen geeigneten Mittelweg zu finden, um diese Probleme zu verinigen.
Die Lösung heißt: wende Rollen und Berechtigungen richtig an. Bei deinem Beispiel würde das bedeuten, dass dein Benutzer, sobald er Gründer einer Gruppe wird eine Rollenänderung erfährt. Er bekommt eine neue, zusätzliche Rolle, die ihn zu einem Gründer macht. Trotzdem wird er eine (Sichtbarkeits-)Berechtigung auf die erstellte Gruppe haben.

Du musst dir einfach klar darüber werden, was über Rechte (Sichtbarkeit) und über Rollen (Funktionsberechtigung) geregelt werden muss. IMHO lässt sich das sehr einfach feststellen.
__________________
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
Alt 18.10.2010, 21:57  
Benutzer
 
Registriert seit: 04.10.2010
Beiträge: 55
PHP-Kenntnisse:
Fortgeschritten
Geryon befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dr.e. Beitrag anzeigen
Hallo Andy,

wenn es dich interessiert, dann schau mal hier vorbei.
Dieser Link würde mich brennend interessieren. Nur leider geht er nimmer

@ dr.e : könntest du das evtl. fixen?
Geryon ist offline   Mit Zitat antworten
Alt 18.10.2010, 21:59  
Neuer Benutzer
 
Registriert seit: 20.03.2009
Beiträge: 19
bond befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Geryon Beitrag anzeigen
Dieser Link würde mich brennend interessieren. Nur leider geht er nimmer

@ dr.e : könntest du das evtl. fixen?
Der hier geht:
http://adventure-php-framework.org/S...Usermanagement
__________________
bCounter — Besucherzähler für PHP und MySQL
bond ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

LinkBacks (?)
LinkBack to this Thread: http://www.php.de/software-design/50416-rechteverwaltung.html
Erstellt von For Type Datum
implementierung eines Rechtemanagements - XHTMLforum This thread Pingback 18.06.2009 16:57
Literatur :: Adventure PHP Framework (APF) This thread Refback 23.04.2009 18:59
Userrechtescript - Developer's Guide This thread Refback 09.03.2009 00:53
Userrechtescript - Developer's Guide This thread Refback 08.03.2009 10:12
Rechtesystem frage. - Forum: phpforum.de This thread Refback 15.02.2009 19:54

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php rechteverwaltung, rechteverwaltung, rechteverwaltung modellieren, rechteverwaltung rollen gruppen, rollen rechte uml, php zugriffsrechte verwalten, rechte rollen php, rechteverwaltung rollen, php user login mit rechteverwaltung, \einer rolle zugewiesen werden\, php rechteverwaltung framework, php framework rechte rollen, php rechte zusammensetzen, geeignete rechteverwaltung php, php rechteverwaltung zusammengesetzt, uml rechteverwaltung, gründungsmitglied \beigetretenes mitglied\, umgt beispiel, als nomaler user kann nicht alle html sehen rechteverwaltung

Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum