Two identity systems, fully separate
Firm staff and portal clients have independent accounts, sessions, and sign-in pages. A client login can never reach staff features, and a staff login never poses as a client. A person with businesses at two different firms uses one portal login and picks between them. Removing them from one firm never disturbs the other.
Two-factor authentication on both sides
Staff accounts support two-factor authentication with recovery codes. Client accounts support it too, by authenticator app or email code. Magic links from request emails are one-time and still honor the second factor for anyone enrolled.
Folder-level access control
Each folder controls whether clients can see it and whether they can upload into it. Folders can additionally be secured to named staff with expiring access. Admins see every client; members see only clients they're assigned to.
Share links that can be revoked, and that rot on purpose
Per-file shares name their recipients, can require login, and carry expiry dates. Resending a share rotates the recipient's access secret, so an old forwarded email stops working. Every share tracks how many times it was opened, first and last view.
A permanent, visible audit trail
Every meaningful action (uploaded, viewed, renamed, shared, deleted) is recorded permanently and shown in the product: each client has an activity timeline and each file its own history, with names and timestamps. Accountability is a tab in the product. Open a file's history and it is all there.
Uploads that skip the middleman
Files travel directly between the browser and encrypted object storage over TLS using short-lived, signed URLs, so file contents never pass through the application servers. Sensitive endpoints are rate-limited, and deleted files sit in a 30-day trash before purging, so an accident is recoverable and a purge is real.