nextcloud / server

☁️ Nextcloud server, a safe home for all your data
https://nextcloud.com
GNU Affero General Public License v3.0
27.39k stars 4.07k forks source link

Keep list of expired public shares #17996

Open pjrobertson opened 4 years ago

pjrobertson commented 4 years ago

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)

skjnldsv commented 4 years ago

cc @rullzer @jancborchardt does it make sense? It could coincide with the "request access to expired share feature request" (somewhre, can't find it)

jancborchardt commented 4 years ago

Seems reasonable to me, the use-case make sense. It’s a case for "Deleted shares".

alexbijma commented 4 years ago

@pjrobertson thanks for this, exactly what a client asked me for. He has a lot of shared links with an expiration date. and especially benefit 2 is very helpfull also to extend a shared link.

tsueri commented 2 years ago

This would be very useful for our organisation. Sometimes I get tickets because of unaware users complaining "the cloud does not work". If there was a reason exactly why access was denied, this could also reduce the number of tickets for all admins.

tomasz-lasko commented 1 year ago

+1

is this is planned for some forseable future?