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 or Super 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 with Person A for 30 days. Share token is ABCD
b) Link expires and token ABCD is removed
c) I share another folder with Person B. Share token is ABCD
d) There's a chance that Person A might access the folder Person 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)
I'm not sure if I've got this 100% right, but it seems like the
XX_sharetable in the database is being pruned to remove public links that have 'expired'. I can understand the reasoning for this (reduce the size of theXX_sharetable), however the negative usability impact is as follows:The document could not be found on the server. Maybe the share was deleted or has expired?(or see image below):Super Secret No.1orSuper 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 aXX_share_expiredtable. 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 likeAccess to the document you are trying to access has expired- since we know it's not a 'deleted' issue.Other (potential) benefits:
a) I share a folder with
Person Afor 30 days. Share token is ABCDb) Link expires and token ABCD is removed
c) I share another folder with
Person B. Share token is ABCDd) There's a chance that
Person Amight access the folderPerson Bby mistake.Server: Nextcloud 16.0.4, running on CentOS/Apache (LAMP)