Keep list of expired public shares
@skjnldsv is already working on this.
Since Sep 19, 2024.
- Dominant language
- PHP
- Stars
- 36.9k
- Forks
- 5.2k
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 713
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.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 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 Afor 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 Amight access the folderPerson Bby 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)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.