Zur Boardunity Forenstartseite

Zurück   Boardunity & Video Forum » Technik » Programmierung und Datenbanken

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1  
Alt 09.04.2004, 14:17
Benutzerbild von MaMo
Viscacha Coder
 
Registriert seit: 09.2003
Beiträge: 812

Gruppenverwaltung - How to?


Hi.

Ich bin mittlerweile ganz gut mit dem Viscacha Board zugange, doch eine Sache da zerbreche ich mir jetzt seit einigen Tagen den Kopf drüber. Wie realisiere ich das mit den Nutzergruppen/rechten?

Ich hoffe mir kann einer Erklären wie ich das am besten Löse. Habe mir schon einiges angeguckt aber so richtig schlüßßig bin ich noch nirgend geworden.

Hoffe ihr könnt mir da weiterhelfen,
MfG MaMo
__________________
Forensoftware mit integriertem CMS: Viscacha 0.8!
  #2  
Alt 09.04.2004, 15:20
Benutzerbild von Fabchan
früher Dracaelius
 
Registriert seit: 10.2003
Ort: Seesen
Beiträge: 354
Naja, am besten, ein Benutzer kann in mehreren Gruppen sein. Entweder du speicherst dies in den Daten jedes Benutzers in diesem (oder einem ähnlichen) Format speicherst:

1,3,4,7 (Gruppen-IDs , geteilt durch Komma!)

Oder du nimmst eine Extra-Tabelle, um Benutzer und Gruppen miteinander zu verknüpfen.

Wenn du in den Gruppen selbst bestimmte Rechte festlegst, dann mach es am besten so:
Benutzer kann [irgendwas]: 1=ja, 0=nein, -1=nicht gesetzt.

Wenn du (Beispielsweise) per MySQL dann in einer Query die Gruppen eines Benutzers abfragst, ermittelst du dann immer den maximalen Wert jeder Spalte, Beispiel:
Klein Fritzchen ist in 3 Gruppen:

- Almjodler: darf_limo_trinken=-1
- Almdudler: darf_limo_trinken=1
- Bersteiger: darf_limo_trinken=0

Nun erhält der Benutzer immer die maximalen ihm zugewiesenen Rechte (Er darf Limo trinken!). Man müsste am besten irgednwo im Forum Standardwerte definieren, die angeben, ob der User Standardmäßig Limo trinken darf oder nicht, am besten in Standardgruppen, denen Jedes Mitlgied automatisch angehört (Gäste, registrierte Benutzer)
Man kann noch Prioritäten dazunehmen, was heißt, dass bestimmte Gruppen andere Gruppenrechte "überschreiben" können, ürde ich persönlich aber nich machen!
Ich habe auch mal ein Board programmiert (nie fertig geworden), das habe ich es ähnlich, wie oben beschrieben gemacht!

Ich hoffe, das hilft dir weiter!

__________________
Fabian Michael
"Ein Tag, an dem du nicht lächelst, ist ein verlorener Tag."
- Charlie Chaplin

Wiki
  #3  
Alt 09.04.2004, 15:35
Benutzerbild von MaMo
Viscacha Coder
 
Registriert seit: 09.2003
Beiträge: 812
Hi.

Danke. Ja das hilft schonmal ein wenig. Hat noch einer andere Ausführungen?

MfG MaMo

__________________
Forensoftware mit integriertem CMS: Viscacha 0.8!
  #4  
Alt 09.04.2004, 15:57
Mitglied
 
Registriert seit: 10.2003
Ort: Bottrop
Beiträge: 779
Ich möchte das bei meinem Board so realisieren:
Der Nutzer gehört nur einer Gruppe an, besitzt aber einen Userlevel und einen Straflevel.
Nun wird, z.B. beim posten geprüft:
Darf die Gruppe dort posten? Besitzt er einen Userlevel größer oder gleich dem Minimum? Ist sein Straflevel kleiner als der maximal erlaubte?
Ich denke das ist einfach zu realisieren, gewährt aber dennoch viele Freiheiten für den Admin.

Zugegeben, das System ist von Rapidforum abgeguckt... "

Allerdings ist Dracaelius Version deutlich beliebert und wohl auch besser.

__________________
Patrick Gotthardt
Patrick Gotthardt on Software
  #5  
Alt 09.04.2004, 16:29
Benutzerbild von exe
exe exe ist offline
titellos
 
Registriert seit: 07.2003
Ort: München
Beiträge: 888
Ich habe für ein eigenes Forum folgenden Ansatz überlegt und angefangen (erfolgreich) umzusetzen.
Das Gruppensystem umfasst die Möglichkeit ein Mitglied mehreren Gruppen zuzuweisen, jeder Gruppe individuellen Zugriff auf die verschiedenen Boardunktionen und auf einzelne Foren zu geben.
Folgende Tabellen (MySQL) werden benötigt.
1. Eine Tabelle in der generelle Informationen, wie Gruppen ID und Titel gespeichert werden.
2. Eine Tabelle in der für jede Gruppe allgemeine Zugriffsrechte gespeichert werden (kann Suche benutzen, kann Mitgliederliste einsehen usw.).
3. Eine Tabelle in der gespeichert wird welche Gruppe welches Forum wie betreten darf (kann Forum betreten, kann Themen starten, kann Antworten schreiben, kann Beiträge editieren usw.).
4. Eine Tabelle in der gespeichert wird welcher Benutzer Mitglied in welchen Gruppen ist.

Angenommen die Tabellen bekommen folgende Namen:
1. groups
2. group_permissions
2. forum_permissions
4. group_memberships

brauchen sie folgende Struktur:

groups:
Code:
group_id int | group_title varchar
group_permissions:
Code:
group_id int | permission_name varchar | permission_value enum(0, 1)
forum_permissions:
Code:
group_id int | forum_id int | permission_name varchar | permission_value enum(0, 1)
group_memberships
Code:
group_id int | user_id int
'permission_name' enthält jeweils den Name des Zugriffsrechts ('can_use_search', 'can_view_memberlist', 'can_view_forum', 'can_start_topics' usw.) während 'permission_value' jeweils identifiziert ob das Zugriffsrecht gegeben (1) oder verweigert (0) wird.
Wir nehmen einfach mal an das der aktuelle Benutzer die Nummer 5 hat und Mitglied in den Gruppen 1,2 und 4 ist.

Wenn du die Gruppen haben willst in der der Benutzer Mitglied ist:
Code:
SELECT group_id FROM group_memberships WHERE user_id = 5
Willst du wissen willst auf welche Funktionen der Benutzer Zugriff hat:
Code:
SELECT permission_name, permission_value FROM group_permissions WHERE group_id IN(1,2,4)
Da du dann aber für die selben Zugriffsrechte möglicherweise verschiedene Werte bekommst musst du das Ergebniss noch durchgehen und für jedes Zugriffsrecht den maximalen Wert (1) nehmen.
Wenn also Gruppe 1 und 2 die Suchfunktion nicht benutzen dürfen, 'can_use_search' also auf 0 steht, Gruppe 4 die Suchfunktion aber benutzen darf, 'can_use_search' also auf 1 steht, kann auch der Benutzer mit Mitgliedschaft in allen 3 Gruppen die Suchfunktion benutzen.

Angenommen der Benutzer betritt das Forum mit der Nummer 7 musst du in etwa das gleiche machen:
Code:
SELECT permission_name, permission_value FROM forum_permissions WHERE group_id IN(1,2,4) AND forum_id = 7
Das Ergebniss musst du dann halt wieder durchgehen und für jedes Zugriffsrecht den maximalen Wert nehmen.

Das ganze ist ein Ansatz wie ich ihn mir überlegt habe, hoffe das war jetzt verständlich genug

  #6  
Alt 09.04.2004, 20:44
Benutzerbild von MaMo
Viscacha Coder
 
Registriert seit: 09.2003
Beiträge: 812
Hi.

Hmm... ja der Ansatz @ exe ist gut. Ich denke den werde ich so auch praktizieren. Danke für eure Hilfe, werde jetztr mal starten.

MfG MaMo

__________________
Forensoftware mit integriertem CMS: Viscacha 0.8!
Antwort


Stichworte
-


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.
Gehe zu






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25