Adatszoba-portál – hozzáférési lánc, belépés és megtekintés

A portál minden kérésnél újraellenőrzött hozzáférési lánca, a belépés, a tartós munkamenet és a meghívó-token, valamint a megtekintő, előnézeti, kereső és gyorslink végpontok.

Áttekintés

Jelszóval védett, önálló portál-oldal, ahol az admin oldalon megosztott mappák dokumentumai nézhetők, kereshetők és — ha engedett — vízjelesen tölthetők le. A belépés az alapkeretrendszer admin-felhasználó törzsével történik. Áruház-függő: a mappák és dokumentumok csak abban az áruházban (aldomainen) látszanak, amelyhez hozzá vannak rendelve.

Közös hozzáférési lánc

  1. A felhasználó aktív (isUserActive, minden kérésnél); munkamenet-kulcs docshare_user_id.
  2. A mappa elérhető (accessibleWhere): doc_share.status = 1, date_start <= most < date_expire budapesti idő szerint, a felhasználó saját hozzárendelési ablaka, és áruház-szűrés (doc_share_to_store).
  3. Dokumentum: doc_share_item tagság, doc.status = 1, tartalmi (cég-)hatókör a permission_scope company/company_id szabályaiból (felhasználó, ennek hiányában csoport; super admin korlátlan; szabály nélkül nincs szűkítés; üres engedélylista = semmi), és dokumentum-áruház szűrés (doc_to_store).
  4. Minden esemény audit-naplóba megy (document/portal csatorna) IP-címmel és böngésző-azonosítóval.

Végpontok

VégpontMűködés
document/documentbelépés nélkül csak a bejelentkező ablak; belépve bal navigáció, címkék, globális kereső. doc_share_id nélkül kezdőlap: mappa-kártyák, statisztika, az összes elérhető dokumentum doc_id szerint deduplikálva (a kedvezőbb letöltési jog nyer), külső weblinkek, összméret; doc_share_id-val mappa-nézet. Soronként típus, can_view, can_download (mappa ÉS dokumentum letölthető), kizárólag vezérlő-URL-ek. Nem alap áruháznál az áruház neve és logója.
.login, .logoutauthenticate(): aktív felhasználó, password_verify; remember esetén 30 napos tartós token (doc_portal_token, süti dlbt_portal_remember: secure, httponly, SameSite=Lax). Hibánál napló a felhasználónévvel. Kilépéskor a token és a süti is törlődik.
.setpassword, .setpasswordsaveverifyInviteToken() (SHA-256; aktív, fel nem használt, le nem járt, aktív felhasználóhoz kötött); érvénytelennél adat nem szivárog. Mentés: legalább 8 karakter és egyezés, setUserPassword(), markInviteUsed(), automatikus belépés, napló. Tábla: user_invite.
.viewteljes lánc; közvetlen navigáció tiltva beágyazható típusnál (Sec-Fetch-Dest: document); bájtok a tárhelyről (local másolat, Drive és OneDrive esetén a webrooton kívüli doc-cache); office fájl Drive-konverzióval PDF-re (cache-elve); PDF-nél dinamikus vízjel (Dlbtwatermark::pdf: név, azonosító, dátum, idő, figyelmeztető szöveg); Content-Disposition: inline; az ideiglenes fájlok törlődnek
.gviewDrive-fájlnál a lánc után link-alapú olvasási jog (munkamenetenként egyszer), átirányítás a Drive előnézetre; ez az út nem vízjelez
.thumbcsak kép, w = 240, 480 vagy 960; ETag és 304; gyorsítótár LRU-érintéssel; jog nélkül 403
.sheetletölthető mappa és dokumentum esetén Google-másolat („név (online)”), writer/anyone joggal, a doc rekordba írva; az eredeti nem változik
.search, .searchallnév szerinti szűrés a mappán belül; globális keresés az összes elérhető mappában, naplózva a kifejezéssel és a találatszámmal
.t&t=gyors link belépés nélkül: doc_token (SHA-256, aktív, le nem járt), opcionális jelszó, dl=1 csak allow_download=1 tokennél, proxyzott bájtok, találat-számláló, napló; érvénytelen → semleges 404; vízjel ezen az úton nincs

Ismert korlátok

  • A belépésnél próbálkozás-korlát a kódban nincs.
  • A gview és a gyors link útja nem vízjelez.