Data room: architecture, sign-in and terms acceptance
Structure of the data room store, sign-in, the persistent token, invitation and password links, and how acceptance of the terms of use is recorded and revoked.
The data room runs on a separate store (subdomain) with its own theme; the portal controller is document/document, the permission keys live on the document/dataroom route. Folders and documents can be assigned to stores; the portal shows only the content of its own store.
Services
Data room permission (three layers in one decision point), data room access (granting rights, e-mails), contract in the data room (status, termination request), watermark, watermarked issue (package), document store.
Sign-in and account
Table names carry the installation's own prefix in the database.
- Sign-in with the framework's user master (username + password, active user). There is no attempt limit.
- "Keep me signed in": 30-day persistent token, stored as a hash in
doc_portal_token; cookiesecure,httponly,SameSite=Lax. Signing out deletes the token. - Activation or invitation link: single use, valid 7 days (
user_invite, SHA-256 hash); own password at least 8 characters with confirmation, then automatic sign-in. - Forgotten password: username or e-mail → single-use link valid for 2 hours.
- Every request re-checks whether the user is active.
Terms acceptance
- The theme setting ("Legal and contact pages", "Acceptance of terms is mandatory") puts the terms source (
information:IDorcms:ID), the hash of the text in all languages (version) and the acceptance page title into the configuration. - When switched on, the acceptance page comes after sign-in; without acceptance no room endpoint returns data.
- Recording:
doc_room_consent(user, store, source,content_hash, language, IP, browser, time). A changed text gives a new hash → acceptance is required again. - Revocation on the admin user form (
user/user.consentreset, permissionuser/user+consentreset): the row is not deleted,revoked_atandrevoked_byare set. - Before the first watermarked download or share a notice appears once per session.
- If a saved information page is the terms source of a data room store, the event (
event/roompolicy.changed) e-mails the users with access (room_terms_changed).
Portal endpoints
document/document (sign-in page or room), .login, .logout, .setpassword, .setpasswordsave (valid link), .forgot, .consent (signed in, POST + CSRF). JSON errors have the error + error_code structure. Log channel: document/portal; every portal event is logged with IP (X-Forwarded-For) and browser.
Known limitations
The portal sign-in has no attempt limit. It has not yet run in a live data room with real sign-ins.