feat: add expiring secure send links#104
Conversation
DenizAltunkapan
left a comment
There was a problem hiding this comment.
The backend implementation is genuinely strong: hashed 256-bit tokens, bcrypt password protection, the password sent via header rather than the URL, user-root validation repeated at download time, uniform unavailable-link responses, and separate create/access rate limits. Two blockers before it can go in, plus a couple of small non-blocking notes.
Blocker 1: the PR is not mergeable (GitHub reports CONFLICTING). PR #103 (scan rate limit) merged on 2026-07-18 and touches the same files: RateLimitCategory, RateLimitProperties, RateLimitFilter, application.properties, and the rate-limit tests. Please rebase onto main and make sure SCAN, SECURE_SEND_CREATE, and SECURE_SEND_ACCESS all survive the merge.
Blocker 2: Closes #100 is not accurate. #100 requires creating a Secure Send from the file viewer and sharing it into a chat, and the PR itself says both frontend integrations are still outstanding. Please change it to Part of #100 (or Backend support for #100), or split the remaining frontend and chat work into their own tracked issues, so #100 is not auto-closed with its main criteria unmet.
The non-blocking notes are inline.
9ed43e6 to
7fc2124
Compare
DenizAltunkapan
left a comment
There was a problem hiding this comment.
@arnabnandy7 thanks again, looks good.
Signed-off-by: Arnab Nandy <arnab_nandy7@yahoo.com>
7fc2124 to
7fc9915
Compare
Summary
Linked issue
Part of #100
How to test
Expected result:
Manual flow:
urlwithout authentication.GET /api/secure-sends.DELETE /api/secure-sends/{id}and verify its public URL returns404.404and incorrect passwords return401.Notes / Risk
secure_sendstable through the existingspring.jpa.hibernate.ddl-auto=updateconfiguration. No explicit migration is included.cloudpage.secure-send.*.