#26
| ||||
| ||||
Dein Rechte-System hat einen kleinen Hacken Ein Mod kann alle Beirtäge in jeder Sektion bearbeiten bzw. löschen. das wäre in meinen Augen ein Super-Mod Ein Mod darf nur in seiner Sektion diese Rechte haben. __________________ Sven-Marcus Maderbacher Cu l8er Nev the XxX Projekte: www.Nev-Hilft.de die Seite für Coder Master of www.Burnworld.de |
#27
| |||
| |||
Die Rechte werden immer nur für einen Bereich bzw. eine Kategorie vergeben und kann man somit variieren. Ich bin mir momentan nur nicht ganz im klaren, wie die DB-Strukur dafür aussehen müsste... |
#28
| |||
| |||
Einmal gibt es eine module-Tabelle, in der die Zugriffsrechte für einen Bereich vergeben werden können, weitere Rechte werden dann getrennt davon nochmal für jede (Sub-)Kategorie bzw. Aktion des Moduls/ Bereichs vergeben. Dazu sollte wohl eine Tabelle [MODUL]_rechte Tabelle exisiteren, die Spalten entsprechend der obigen Rechte besitzt und diesen wiederum werden dann Gruppen- und/ oder User-ID's zugeordnet. Könnte das so funktionieren? |
#29
| ||||
| ||||
Ich glaube, du solltest dir das ganze nochmal genau überlegen, auf was du dich da einlässt So einfach wie du, dir das vorstellst, ist es ned. Da müssen einige Sachen überdenken. Warum sollte man ein Globales Recht auf eine Funktion legen, ausser wenn man sie gesamt Ausschalten will. Du kannst die Beziehung Funktion - Recht nur auf die Gruppe oder auf den User legen. __________________ Sven-Marcus Maderbacher Cu l8er Nev the XxX Projekte: www.Nev-Hilft.de die Seite für Coder Master of www.Burnworld.de |
#30
| |||
| |||
Das eine wäre alle User- und Gruppen-ID's in eine Spalte schreiben (z.B. Komma getrennt) und dann wieder auseinandernehmen oder 2 Spalten je Recht (1* User, 1* Gruppe) anlegen. In meinen Gedanken sieht das alles ganz doll aus, doch die Umsetzung (DB-Tabellen) ist da problematisch bzw ich habe dazu keine gute Idee. @Nev: Dein Rechtesystem habe ich nicht verstanden, weshalb ich nicht weiß, ob dieses einfacher oder besser ist als meine Idee. Das Rechtesystem, das ich umsetzen will, sollte einfach nur Gruppen und auch Usern Rechte vergeben/ prüfen. Also Gruppen und/ oder Usern Rechte und Verbote für gewisse Bereiche geben. Verbote haben Vorrang. Berechtigungen werden ODER_Verknüpft Verbot => IMMER verbot! 1+ Berechtigungen => true 0 Berechtigungen => false Vergebe ich Rechte nur für Gruppen, dann habe ich später evtl sehr viele Gruppen, wenn einzelne/ wenige User zusammen die Rechte für einen Bereich haben sollen und alle anderen keinen Zutritt... |
#31
| |||
| |||
Vielleicht hilft es dir, wenn du dir erstmal ein paar fertige Usermanagement-Systeme anschaust. Um das Prinzip der Rollen zu verstehen, wuerde ich folgende Klassen vorschlagen: http://www.phpclasses.org/browse/package/513.html . Das Package ist nicht so umfangreich und meiner Meinung nach leicht zu ueberschauen. Da kannst du auch sehen, wie die Tables aufgebaut sein koennten. Ansonsten gibt es auf phpclasses.org noch diverse andere Beispiele die man sich anschauen kann um ein Grundverstaendnis fuer eine moegliche Umsetzung zu bekommen. Ich kann dir wirklich nur zu einem Rollen-Rechtesystem raten. Die Flexibilitaet die du dir damit schaffst, willst du irgendwann nicht mehr missen. |
#32
| |||
| |||
Ok, ich habe zwar oftmals Probleme mich in fremden Code einzuarbeiten, aber ich schau mit die Klasse mal an Kann mir jemand diese Klasse an xetolosch.arcor.de schicken, ich bin dort nicht angemeldet... |
#33
| |||
| |||
Hier gibts die direkt zum Download: http://adnoctum.netfirms.com/products/auth/ Wie gesagt, ist nur ein Beispiel wie sich sowas umsetzen laesst. Aber der Code ist gut zu durchblicken. Da musst du dich nicht gross einarbeiten. Ich glaube da waren auch Beispiele dabei. |
#34
| |||
| |||
Momentan sehe ich immernoch die wenigsten Probleme mit einem gruppenbasierenden Rechtesystem. - Aktionen besitzen Rechte (lesen, schreiben, editieren, ...) - Diesen Rechten werden Gruppen zugeordnet (eindeutige Zahlen) - Den Gruppen werden User zugeordnet (eindeutige Zahlen) Geprüft werden diese dann mittels AND-Verknüpfung von benötigten Rechten und Gruppen über die eindeutigen Zahlen. Dies ist das einzigste Rechtesystem, das ich umzusetzen verstanden habe. Ich werde mir auch weiterhin andere anschauen und überlegen, wie ich Userrechte noch integrieren kann. |
#35
| |||
| |||
falls es noch nicht kam, es gibt da diese Doku vom Koehntopp über phplib. Da ist auch ganz gut erläutert, wie das auth-modul funktioniert, da kannst du dir vielleicht ein paar anregungen holen. http://kris.koehntopp.de/artikel/phplib-deutsch/ |
#36
| |||
| |||
Danke, muss ich mir mal anschauen Ist es ausreichend mit einem globalen bannen zu arbeiten, oder sollte man das für verschiedene Module getrennt lösen? Globaler Bann würde sich einfach realisieren lassen. Hier die geplante Abfolge: 1.) User- und Gruppenrechte kombinieren 2.) notwendige Rechte für den Zugriff/ die Aktion holen 3.) Berechtigung prüfen (true oder false) 4.) Berechtigung wiederrufen wenn ein Verbot vorliegt 5.) Berechtigung wiederrufen wenn der User gebannt ist return "true" oder "false" Alternative andere Prüfreihenfolge: => liegt ein verbot vor oder ist der User gebannt? => Rechte nicht prüfen und direkt "false" zurückgeben Welche der beiden Möglichkeiten haltet ihr für besser und sinnvoller? |
#37
| |||
| |||
Mit Rollen einfach die jeweilige Rolle entziehen |
#38
| |||
| |||
Diese Rolle oder die Berechtigung soll ja nur zeitweise entzogen werden und nicht dauerhaft. Somit kann ich die normalen berechtigungen nicht entziehen, sondern diese nur als ungültig markieren. Dazu benötige ich evtl eine neue Spalte. Globales bannen kann ich in der Mitglieder-Tabelle problemlos mit einer Spalte realisieren, während ich für das Bannen einzelner Module in der gesamten module-Tabelle eine Spalte hinzufügen muss, wo ich alle gebannten Mitglieder-ID's reinschreiben muss. Diese müsste ich dann wieder trennen und prüfen, ob die entsprechende User-ID dabei ist. Also mehr aufwand wie dies für einen globalen Bann notwendig wäre. Einfachere Möglichkeiten werden gerne genommen |
#39
| |||
| |||
Also ich finde deine Rechtesystem ziemlich umstaendlich. Nicht nur von der Umsetzung, auch vom Handling. Wenn ich jemandem in einem Rollensystem einen Bereich, auch nur zeitweise sperren will, dann loesch ich seine entsprechende Rolle und wenn er wieder rein darf, dann bekommt er sie halt wieder. Einfacher gehts nicht. Die benoetigten Rollen lassen sich ganz simple in jedem Modul definieren und werden beim laden geprueft. Fertig. Globales Bannen ist genauso ueber eine Rolle moeglich, bzw. ueber eine Gruppe die entsprechende Rollen hat oder nicht hat und der der User zugeordnet ist. |
#40
| |||
| |||
1.) Dann erklär mir bitte mal jemand verständlich wie das mit Rollen funktionieren soll und, abgesehen von der Bezeichung, der Unterschied zu finden ist... Ich meine auch die Umsetzung in DB-Tabelles! 2.) Es ist immernoch die Frage ob es Sinn macht, eine Bannung nicht ausschließlich global durchzuführen. Ein Spammer wird wohl sein Beitragsniveau nicht nach dem Modul ändern |
#41
| |||
| |||
1.) Hier wurden doch schon genug Links gepostet. Sowohl zum Prinzip als auch Beispielklassen. Da solltest du eigentlich alles finden. Tables brauchste in etwa folgende: users, groups, roles, users2groups, groups2roles verknuepft ueber die jeweiligen PKs. 2.) Ist halt die Frage wie flexibel du sein moechtest. Aber wenn du schon mit einem modularen System anfaengst moechtest du ja scheinbar recht flexibel sein. Also wuerde ich mich nicht von anfang an auf irgendwas festlegen. |
#42
| |||
| |||
Dann wahrscheinlich nochmal Users2Roles, damit man Usern auch direkt eine Rolle zuteilen kann. Beeinflusst es die performance, wenn man in einer Spalte kommagetrennte Daten ablegt, diese zu einem array aufsplitten? Also "mid1, mid2, mid3, mid4,..." zu einem Array wandeln Oder habt ihr eine alternative Möglichkeit für mich? |
#43
| |||
| |||
Du kannst auch serialize und unserialize verwenden. ob das schneller ist weiß ich nicht |
#44
| |||
| |||
Komplett Editiert!!! Meine aktuelle Umsetzungsidee sieht wie folgt aus: - das Rechtesystem verarbeitet nur Gruppen - Userberechtigungen müssen über virtuelle Gruppen ablaufen (Userrechte über virtuelle Gruppen, d.h. User mit Sonderrechten braucht eine eindeutige GID. Umsetzung noch unklar...) Tabelle mit Rechten: Code: aktion#lesen#schreiben#edit#löschen#edit_alle#löschen_alle lesen => aufaddierte GID's mit Leseberechtigung schreiben => aufaddierte GID's mit Schreibeberechtigung edit => aufaddierte GID's mit Editierberechtigung löschen => aufaddierte GID's mit Löschberechtigung edit_alle => aufaddierte GID's mit "alle editieren" Berechtigung löschen_alle => aufaddierte GID's mit "alle editieren" Berechtigung So, jetzt bekomm ich wieder die Verbote nicht unter... *g* Bei den Verboten könnte ich entweder für eine "Aktion" (z.B. ein Board in einem Forum) vergeben, was einfach zu realisieren wäre. Will ich verbote getrennt für lesen, schreiben, editieren usw. vergeben will, müsste ich wieder für jedes dieser Rechte eine Spalte für die Verbote vergeben... Die eindeutige virtuelle GID für Userrechte ist problematisch. Diese muss ja in die Folge der GID's passen und trotzdem eindeutig sein. Z.B. erst später anfangen. Dies würde die Anzahl der möglichen Gruppen begrenzen und diese virtuelle GID müsste dynamisch erzeugt werden. Oder die User-Sonderrechte werden in einer eigenen Spalte verwaltet und serialisiert abgespeichert... ich bastle mal an diesem Gedanken weiter und höre gerne eure Meinung dazu. Das durchdenken und eure Beiträge helfen mir die Unterschiede und Vor-/Nachteile zu verstehen Zitat:
Geändert von eBoy (09.02.2006 um 21:33 Uhr). |
#45
| |||
| |||
!? raff ich jetzt nicht, ist das auch deine Frage oder hat sichs erledigt? Es sagt ja schon, dass er das ganze über ne normale Bitfolge macht, die er nur noch verknüpfen muss. Aber dann fragt er, wie er sich die korrekten Rechte rausholt, oder hab ich das jetzt falsch verstanden? Also sagen wir mal, ein User hat das "Recht" 24. 24 = 16 + 8 = B 0001 0000 + 0000 1000. Da musste halt jetzt nochn Algorithmus schreiben, der dir das Ding auseinandernimmt, ich würde da spontan auf nen Bitoperator verweisen: PHP-Code: |
Stichworte |
- |
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Wie findet Ihr das System? | Kitilop | Entwicklung und Konzeption sozialer Software | 1 | 06.03.2005 16:17 |
BlackBoard Internet Newsboard System 1.5 | LonelyPixel | Forensoftware | 21 | 24.12.2004 00:54 |
Suche CMS System | Daniel Richter | Blog, CMS, Wiki und Sonstige | 26 | 06.04.2004 02:40 |
Forum mit Content Management System vorgestellt | Eike | Projektvorstellung und Bewertung | 6 | 15.02.2004 22:07 |