Skip to content

Keep list of expired public shares #17996

Open
@pjrobertson

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:

  1. I share a public link with Person A outside my organisation, link expires in 30 days
  2. 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):

Screenshot 2019-11-19 at 16 55 45

  1. 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:

  1. 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.
  2. 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions