composer require digitalzombies/be-inviteExtension key:be_invite · Composer:digitalzombies/be-invite · TYPO3: 14 LTS
Egy új backend-felhasználó felvétele általában azzal jár, hogy létrehozzuk a fiókot, kitalálunk egy jelszót, majd valahogyan eljuttatjuk azt az érintetthez — e-mailben, chaten vagy egy cetlin. A jelszó így olyan csatornába kerül, amelyet nem ti felügyeltek, és többnyire ott is marad.
Ez az extension mindezt meghívással váltja ki. A rendszergazda megad egy e-mail-címet és kiválasztja a felhasználói csoportokat; a meghívott kap egy linket, és maga választ jelszót. Így soha senki nem kezeli más ember jelszavát.
A meghívás folyamata
1. A rendszergazda megnyitja a Rendszer › Backend-felhasználók modult
A TYPO3 saját Szerkesztő létrehozása / Adminisztrátor létrehozása gombjai mellett megjelenik a Felhasználó meghívása gomb. Csak adminisztrátoroknak és csak a felhasználólistán jelenik meg.

2. A meghívott adatainak megadása
A párbeszédablak egy e-mail-címet, egy opcionális nevet és legalább egy backend felhasználói csoportot kér. A csoportok listája a megnyitáskor töltődik be a szerverről, így mindig a ténylegesen létező csoportokat mutatja.

Az e-mail-cím lesz az új felhasználó felhasználóneve — nincs külön felhasználónév, amit ki kellene találni és közölni.

3. A TYPO3 megerősítést kér a rendszergazdától
A backend-fiók létrehozása kiemelt jogosultságú művelet, ezért a TYPO3 sudo módja kéri a rendszergazdát, hogy adja meg újra a saját jelszavát. Egy őrizetlenül hagyott, még bejelentkezett munkamenettel így nem lehet senkinek backend-hozzáférést adni.

4. A meghívó kimegy

A fiók ezzel létrejött, aktív, és megkapta a kiválasztott csoportokat — de nincs olyan jelszava, amelyet bárki ismerne, és még soha nem léptek be vele.

5. A meghívott megkapja az e-mailt
Az e-mail tartalmazza a felhasználónevet és egy aktivációs linket, amely 48 órán át érvényes. HTML és egyszerű szöveges formában is elmegy.

6. A meghívott beállítja a saját jelszavát
A link a TYPO3 saját jelszó-visszaállító képernyőjét nyitja meg — nincs egyedi űrlap, nincs külön kódútvonal, és a webhely jelszóházirendje ugyanúgy érvényesül, mint bárhol máshol.

A jelszó beállítása után a meghívott az e-mail-címével és az imént választott jelszavával tud belépni.
Mi történik a háttérben
| Lépés | Mit csinál az extension |
|---|---|
| Validáció | Levágja a felesleges szóközöket, kisbetűssé alakítja az e-mail-címet, elutasítja a hibás címeket, az 50 karakternél hosszabbakat (ennyi a be_users.username szélessége) és a csoport nélküli kéréseket |
| Duplikátum-ellenőrzés | Elutasítja a meghívást, ha az e-mail vagy a felhasználónév már bármelyik fiókhoz tartozik — beleértve a letiltott és időkorlátos fiókokat is |
| Fiók létrehozása | A rekordot a TYPO3 DataHandler-én keresztül írja: hosszú, véletlenszerű helyőrző jelszóval, admin = 0 beállítással, aktív állapotban, gyökérszinten |
| Aktivációs link | Pontosan úgy állít elő tokent, ahogyan a TYPO3 core a jelszó-visszaállító tokeneket, de 2 óra helyett 48 órás élettartammal, és hashelve tárolja |
Kirendereli az Invitation.html / Invitation.txt Fluid-sablonokat, és a beállított TYPO3-mailerrel küldi el |
Ha a fiók létrejött, de az e-mailt nem sikerült kézbesíteni, a rendszergazda erről kifejezett visszajelzést kap — a fiók ekkor már létezik, és a helyes megoldás egy normál jelszó-visszaállítás, nem egy újabb meghívó.
Biztonsági tulajdonságok
- Csak adminisztrátoroknak. Mindkét AJAX-végpont szerveroldalon ellenőrzi a
$GLOBALS['BE_USER']->isAdmin()feltételt. Nem a gomb elrejtése a hozzáférés-védelem, hanem a végpontok. E nélkül önmagában a csoport-végpont lehetővé tenné bármely szerkesztőnek, hogy kilistázza az összes backend felhasználói csoportot. - Sudo mód. A fiók létrehozása kiváltja a TYPO3 megerősítő (step-up) hitelesítését.
- Nincs jelszókiszivárgás. A helyőrző jelszó véletlenszerű, sosem jelenik meg, nem kerül naplóba, és csak hashelve tárolódik.
- Belső hibák nem szivárognak ki. A DataHandler üzenetei, az SQL-hibák és a mailer konfigurációja PSR-3-on keresztül naplózódnak, és általános üzenet lép a helyükre, mielőtt a böngészőbe jutnának.
- A meglévő fiókok soha nem módosulnak észrevétlenül. Az ütköző meghívást HTTP 409 utasítja el, a párhuzamos beszúrással versenyt vesztő rekord pedig visszagörgetésre kerül.
Egy következményt érdemes tudni: a meghívó linket a core password_reset_validate útvonala
validálja, amely nem veszi figyelembe a
$GLOBALS['TYPO3_CONF_VARS']['BE']['passwordReset'] beállítást. Ha a jelszó-visszaállítást
szándékosan kikapcsoltátok ezen a telepítésen, ez az extension a meghívott felhasználók számára
újra megnyitja ezt az utat.
Követelmények és telepítés
TYPO3 14.0–14.99 és PHP 8.2+. Az extension a v14-es ComponentFactory-t, az
#[AsEventListener] attribútumot és a v14-es HashService-t használja, ezért nem
visszafelé kompatibilis a TYPO3 13-mal.
composer require digitalzombies/be-invite
Utána ürítsétek a gyorsítótárakat. Nincs adatbázis-séma-változás, nincs TypoScript és nincs mit konfigurálni — működő levelezőbeállítás viszont szükséges.
Az e-mail testreszabása
A sablonok a MAIL/templateRootPaths[1700000000] alatt vannak regisztrálva. Regisztráljatok
saját útvonalat magasabb kulccsal, és tegyétek oda az Invitation.html / Invitation.txt
fájlokat:
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['templateRootPaths'][1700000100]
= 'EXT:my_sitepackage/Resources/Private/Templates/Email/';
Elérhető változók: name, email, resetLink.
A mellékelt sablonok csak angol nyelvűek. A meghíváskor a címzettnek még nincs backend-fiókja, így nyelvi beállítása sem, ezért a rendszer nem választ automatikusan nyelvet.
A felület nyelve
A backend felülete angol, német és magyar nyelven érhető el. A feliratok a
Resources/Private/Language/{locallang,de.locallang,hu.locallang}.xlf fájlokban vannak, és a
PHP-kód, valamint a JavaScript-modul közösen használja őket.