WebsiteBaker Support (2.13.x) > General Help & Support

Fehler in der Dokumentation

(1/3) > >>

kuerbis42:
HeyHo, mann bin ich wieder aktiv... :-D

Unter: https://help.WebsiteBaker.org/en/developer-guide/variables-and-constants.php
hat sich (mindestens hier):

--- Code: ---Session variables (class.wb.php) Description:
$_SESSION['USER_ID'] ID of the user loged in
$_SESSION['GROUP_ID'] group ID of the user loged in
$_SESSION['GROUP_NAME'] group name of the user loged in
$_SESSION['USERNAME'] user name of the user loged in
$_SESSION['DISPLAY_NAME'] display name of the user loged in
$_SESSION['EMAIL'] Email
$_SESSION['HOME_FOLDER'] home folder in /media of user loged in
$_SESSION['TIMEZONE'] timezone of user loged in

--- End code ---
ein Fehler eingeschlichen.
Die $_SESSION-Variable heißt nicht GROUP_ID sond GROUPS_ID.
Also: $_SESSION['GROUPS_ID']    group ID of the user loged in


Greets

sternchen8875:
nicht unbedingt falsch  :wink:

beide Session-Variablen existieren, aber ich schreib es dazu

Ein kurzer Blick in die Geschichte von WB: group_id stammt aus früheren Zeiten von WB und erlaubte nur eine einzige ID. Wenn ich richtig "geforscht" habe, wurde es um WB 2.7.1 ergänzt mit der groups_id. Dieser Wert ist ein Array und ermöglicht es, User mehrere Gruppen zuzuweisen.

Weil die Entwickler meinten, group_id wäre nun überflüssig, stand es viele Jahre auf deprecated. Hat aber nie jemand entfernt und irgendwann flog der Kommentar auch raus. Es hat heute nach wie vor seine Gültigkeit und kann auch verwendet werden. Allerdings muß man dann auch wissen, wie es funktioniert.

Wir nehmen an, es existieren mindestens 3 Usergruppen. Es können auch nur 2 oder 30 sein, aber 3 erklärt sich leichter ;-)
Usergruppe 1 ist immer die Administratorengrup pe, Gruppe 2 nenn ich Fußball, hier arbeiten Redakteure im Fußballbereich, Usergruppe 3 das Gleiche für Handball

Ich möchte einen neuen Fußball-Redakteur anlegen, wähle also Gruppe 2, group_id wäre dann die 2, groups_id ebenso
Lege ich nun einen User an, der beide Bereiche abdecken soll, bekäme auch der die group_id == 2 und im Feld groups_id steht dann 2,3

group_id ordnet zuerst die Gruppen, die in der Gruppenauswahl genannt wurden, der Reihe nach, beginnend mit der obersten Priorität Administratorengrup pe 1, dann aufwärts, darum ist diese group_id also die 2, die SESSION['groups_id'] dann aber 2,3

Das grundsätzlich nicht empfohlen wird, direkt mit Session-Variablen zu arbeiten, wirst du sicher wissen. Alles Weitere wäre dann abhängig von dem, was da erforderlich ist. Da diese Session-Variablen einen erfolgreichen Login erfordern, kannst du auch die wb-internen Funktionen nutzen, die z.b. in der class.wb.php vorliegen, einfach mal durchscrollen und im Zweifel einfach fragen






kuerbis42:
danke für die ausführliche Antwort  und ich will auch gar nicht widersprechen :-o

....aber wenn ich ein print_r($_SESSION) mache, dann erhalte ich (gekürzt) folgendes:

--- Code: ---Array (
[session_started] => 1767633378
[TOKENS] => .....}
[SYSTEM_PERMISSIONS] => Array ( [0] => access [1] => ....] => users_delete [52] => users_modify )
[MODULE_PERMISSIONS] => Array ( [0] => )
[TEMPLATE_PERMISSIONS] => Array ( [0] => )
[USER_ID] => 1
[GROUPS_ID] => 1
[USERNAME] => Cheffe
[DISPLAY_NAME] => Administrator
[EMAIL] => someone@world.com
[HOME_FOLDER] =>
[LANGUAGE] => DE
[TIMEZONE] => 0
[DATE_FORMAT] => d-m-Y
[TIME_FORMAT] => H:i
[GROUP_NAME] => Array ( [1] => Administrators )
[PAGE_ID] => 8
[HTTP_REFERER] => https://..../pages/sessions.php )
--- End code ---

GROUP_ID ist nicht dabei.
Sinn und Zweck für mich:
je nach Gruppe sollen auf der Seite zusätzliche Felder angezeigt werden: Admins haben "immer alles" und "BackOffice" darf ein wenig mehr als "sterbliche Normalos" :-)

Deswegen wollte ich mit $_SESSION['GROUP_NAME'][$_SESSION['GROUP_ID']] auf die Gruppe prüfen und bin dann über das "S" gestolpert, weil nichts zurück kam.
(Dazu möchte ich dann noch ergänzen: lt. Dokumentation steht in $_SESSION['GROUP_NAME'] schon der Name der Gruppe drin, was aber ja so nicht stimmt, denn es ist ein Array, mein erster Ansatz:

--- Code: ---if($_SESSION['GROUP_NAME']==="DeineGruppe")
--- End code ---
schlug fehl, deshalb musste ich tiefer gehen)

sternchen8875:

--- Quote ---und ich will auch gar nicht widersprechen
--- End quote ---
nur keine Angst ;-)
Wenn falsch, dann falsch und das darf man auch sagen

zur GROUP_ID
Ja, da muß ich mich wohl korrigieren, was die Session-Variablen betrifft

GROUP_ID wurde gestrichen aus den Session-Variablen ab Version WB 2.13.4. Habe die Hilfe-Seite einen entsprechenden Hinweis verpasst. Analog dem Hinweis zur Variable GROUP_NAME, der, wie richtig bemerkt, einen Array enthält mit den Gruppennamen zu den in GROUPS_ID genannten Gruppen.

zu deinem Vorhaben... Sieh es nicht als Vorgabe, sondern eher als Tip. Du wirst mit etwas Praxis schnell merken, das es so auch viel leichter ist, vorallem aber sicherer.  :wink:

Bin ich, als Frontend-User, erstmal auf der Ebene, das ich Zugriff auf die Session-Variablen habe, was über Cross-Site-Scripting ja kein großes Problem wäre, dann kann ich diese Variablen nicht nur lesen und nutzen, sondern eben auch verändern. Und weil ich an dieser Stelle ja schon eingeloggt sein muß (sonst funktionieren die Session-Variablen ja nicht), kann ich mich dann auch leicht zum Admin machen

mal ein grundsätzlicher Ablauf
1. zuerst prüfen, ob der User auch tatsächlich angemeldet ist mit is_authenticated(), wenn nicht: exit()
2. Wenn angemeldet, hätte er Zugriffsrechte mit get_permission(), wenn nicht: exit()
3. ami_group_member() prüft, ob der User Mitglied der genannte(n) Gruppe(n) ist, damit lassen sich dann Inhalte schalten oder Menüpunkte

andere interessante Funktionen wären z.b.
get_page_permission() - hat der angemeldete User Rechte zum Besuch dieser Seite?
getGroupId() - die aktuelle Gruppen-ID des Users

kuerbis42:
das werde ich gerne beherzigen  :-)
Muss mich erst wieder eingrooven. Hat sich viel getan in den letzten 5 Jahren  :|

Besten Dank

Navigation

[0] Message Index

[#] Next page

Go to full version