Datenraum-Portal – Zugriffskette, Anmeldung und Ansicht
Die bei jeder Anfrage geprüfte Zugriffskette des Portals, Anmeldung, dauerhafte Sitzung und Einladungstoken sowie die Endpunkte für Ansicht, Vorschau, Suche und Schnelllink.
Überblick
Eine eigenständige, passwortgeschützte Portalseite, auf der Dokumente der im Admin-Bereich freigegebenen Ordner angesehen, durchsucht und — falls erlaubt — mit Wasserzeichen heruntergeladen werden. Die Anmeldung nutzt den Admin-Benutzerstamm des Frameworks. Shopabhängig: Ordner und Dokumente erscheinen nur im zugeordneten Shop (Subdomain).
Gemeinsame Zugriffskette
- Der Benutzer ist aktiv (
isUserActive, bei jeder Anfrage); Sitzungsschlüsseldocshare_user_id. - Der Ordner ist zugänglich (
accessibleWhere):doc_share.status = 1,date_start <= jetzt < date_expirein Budapester Zeit, das eigene Zuordnungsfenster des Benutzers und Shopfilter (doc_share_to_store). - Dokument: Mitgliedschaft in
doc_share_item,doc.status = 1, Inhalts-(Unternehmens-)bereich aus den Regelncompany/company_idvonpermission_scope(Benutzer, sonst Gruppe; Super-Admin unbeschränkt; ohne Regel keine Einschränkung; leere Erlaubnisliste = nichts) und Dokument-Shopfilter (doc_to_store). - Jedes Ereignis geht ins Audit-Protokoll (Kanal
document/portal) mit IP-Adresse und User-Agent.
Endpunkte
| Endpunkt | Verhalten |
|---|---|
document/document | ohne Anmeldung nur das Anmeldefenster; angemeldet: linke Navigation, Labels, globale Suche. Ohne doc_share_id die Startseite: Ordnerkarten, Statistik, alle zugänglichen Dokumente nach doc_id dedupliziert (das günstigere Downloadrecht gewinnt), externe Weblinks, Gesamtgröße; mit doc_share_id die Ordneransicht. Je Zeile Typ, can_view, can_download (Ordner UND Dokument herunterladbar), nur Controller-URLs. Bei einem Nicht-Standard-Shop Name und Logo des Shops. |
.login, .logout | authenticate(): aktiver Benutzer, password_verify; mit remember ein 30-Tage-Token (doc_portal_token, Cookie dlbt_portal_remember: secure, httponly, SameSite=Lax). Fehlschläge werden mit Benutzernamen protokolliert. Abmelden löscht Token und Cookie. |
.setpassword, .setpasswordsave | verifyInviteToken() (SHA-256; aktiv, unbenutzt, nicht abgelaufen, an aktiven Benutzer gebunden); bei ungültigem Token gelangen keine Daten nach außen. Speichern: mindestens 8 Zeichen und Übereinstimmung, setUserPassword(), markInviteUsed(), automatische Anmeldung, Protokoll. Tabelle: user_invite. |
.view | volle Kette; direkte Navigation bei einbettbaren Typen gesperrt (Sec-Fetch-Dest: document); Bytes aus dem Speicher (lokale Kopie, bei Drive und OneDrive der Dokumenten-Cache außerhalb des Webroots); Office-Dateien per Drive-Konvertierung als PDF (zwischengespeichert); dynamisches Wasserzeichen bei PDF (Dlbtwatermark::pdf: Name, ID, Datum, Uhrzeit, Hinweistext); Content-Disposition: inline; temporäre Dateien werden gelöscht |
.gview | bei einer Drive-Datei nach der Kette ein linkbasiertes Leserecht (einmal je Sitzung) und Weiterleitung zur Drive-Vorschau; dieser Weg setzt kein Wasserzeichen |
.thumb | nur Bilder, w = 240, 480 oder 960; ETag und 304; Cache mit LRU-Berührung; ohne Recht 403 |
.sheet | bei herunterladbarem Ordner und Dokument eine Google-Kopie („Name (online)“) mit Recht writer/anyone, im Doc-Datensatz gespeichert; das Original bleibt unverändert |
.search, .searchall | Namensfilter im Ordner; globale Suche über alle zugänglichen Ordner, protokolliert mit Suchbegriff und Trefferzahl |
.t&t= | Schnelllink ohne Anmeldung: doc_token (SHA-256, aktiv, nicht abgelaufen), optionales Passwort, dl=1 nur bei Token mit allow_download=1, Bytes über Proxy, Trefferzähler, Protokoll; ungültig → neutrales 404; kein Wasserzeichen auf diesem Weg |
Bekannte Einschränkungen
- Eine Begrenzung der Anmeldeversuche gibt es im Code nicht.
- Die Wege
gviewund Schnelllink setzen kein Wasserzeichen.