Description
I'm not sure if I've got this 100% right, but it seems like the XX_share
table in the database is being pruned to remove public links that have 'expired'. I can understand the reasoning for this (reduce the size of the XX_share
table), however the negative usability impact is as follows:
- I share a public link with Person A outside my organisation, link expires in 30 days
- After 40 days, Person A gets back to me saying they've only just got round to checking my link, and it's expired. They are presented with a fairly unhelpful message
The document could not be found on the server. Maybe the share was deleted or has expired?
(or see image below):
- I decide to re-share the folder with Person A, but I can't remember which folder I originally shared. Was it folder
Super Secret No.1
orSuper Secret No.2
?
Solution
I think public links should not be removed from XX_share
, or if pruning is really necessary, they should be put in a XX_share_expired
table. Following this:
a) I can now see expired links in the 'shares' section of my account, and restore links if need be (that would be to alter the expiration date to 'some time in the future'
b) We can change the unhelpful message The document could not be found on the server. Maybe the share was deleted or has expired?
to something like Access to the document you are trying to access has expired
- since we know it's not a 'deleted' issue.
Other (potential) benefits:
- Helps avoid token collisions (Ok, the likelihood of this every happening is tiny):
a) I share a folder withPerson A
for 30 days. Share token is ABCD
b) Link expires and token ABCD is removed
c) I share another folder withPerson B
. Share token is ABCD
d) There's a chance thatPerson A
might access the folderPerson B
by mistake. - If I'm logged in and access the expired URL, Nextcloud can tell me "The file XXXX you previously shared expired on YYYY. Do you want to set a new expiration date? [big button for set new expiration date]"
Server: Nextcloud 16.0.4, running on CentOS/Apache (LAMP)
Activity