Skip to content

Commit 438a7d7

Browse files
nfebesusnux
authored andcommitted
fix(share): Set expiration time to end of day (23:59:59)
Shares now expire at the end of the selected day instead of the beginning, allowing access throughout the entire expiration day. Also return actual stored time in API response instead of hardcoded 00:00:00 to prevent timezone-related display issues in the UI. Signed-off-by: nfebe <fenn25.fn@gmail.com>
1 parent a3d8aab commit 438a7d7

2 files changed

Lines changed: 7 additions & 7 deletions

File tree

apps/files_sharing/lib/Controller/ShareAPIController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ protected function formatShare(IShare $share, ?Node $recipientNode = null): arra
235235
$expiration = $share->getExpirationDate();
236236
if ($expiration !== null) {
237237
$expiration->setTimezone($this->dateTimeZone->getTimeZone());
238-
$result['expiration'] = $expiration->format('Y-m-d 00:00:00');
238+
$result['expiration'] = $expiration->format('Y-m-d H:i:s');
239239
}
240240

241241
$currentUserPermissions = $recipientNode?->getPermissions() ?? Constants::PERMISSION_ALL;

lib/private/Share20/Manager.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ protected function validateExpirationDateInternal(IShare $share) {
303303
if (!$share->getNoExpirationDate() || $isEnforced) {
304304
if ($expirationDate !== null) {
305305
$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
306-
$expirationDate->setTime(0, 0, 0);
306+
$expirationDate->setTime(23, 59, 59);
307307

308308
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
309309
$date->setTime(0, 0, 0);
@@ -322,7 +322,7 @@ protected function validateExpirationDateInternal(IShare $share) {
322322

323323
if ($fullId === null && $expirationDate === null && $defaultExpireDate) {
324324
$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
325-
$expirationDate->setTime(0, 0, 0);
325+
$expirationDate->setTime(23, 59, 59);
326326
$days = (int)$this->config->getAppValue('core', $configProp, (string)$defaultExpireDays);
327327
if ($days > $defaultExpireDays) {
328328
$days = $defaultExpireDays;
@@ -337,7 +337,7 @@ protected function validateExpirationDateInternal(IShare $share) {
337337
}
338338

339339
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
340-
$date->setTime(0, 0, 0);
340+
$date->setTime(23, 59, 59);
341341
$date->add(new \DateInterval('P' . $defaultExpireDays . 'D'));
342342
if ($date < $expirationDate) {
343343
throw new GenericShareException($this->l->n('Cannot set expiration date more than %n day in the future', 'Cannot set expiration date more than %n days in the future', $defaultExpireDays), code: 404);
@@ -381,7 +381,7 @@ protected function validateExpirationDateLink(IShare $share) {
381381
if (!($share->getNoExpirationDate() && !$isEnforced)) {
382382
if ($expirationDate !== null) {
383383
$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
384-
$expirationDate->setTime(0, 0, 0);
384+
$expirationDate->setTime(23, 59, 59);
385385

386386
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
387387
$date->setTime(0, 0, 0);
@@ -400,7 +400,7 @@ protected function validateExpirationDateLink(IShare $share) {
400400

401401
if ($fullId === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) {
402402
$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
403-
$expirationDate->setTime(0, 0, 0);
403+
$expirationDate->setTime(23, 59, 59);
404404

405405
$days = (int)$this->config->getAppValue('core', 'link_defaultExpDays', (string)$this->shareApiLinkDefaultExpireDays());
406406
if ($days > $this->shareApiLinkDefaultExpireDays()) {
@@ -416,7 +416,7 @@ protected function validateExpirationDateLink(IShare $share) {
416416
}
417417

418418
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
419-
$date->setTime(0, 0, 0);
419+
$date->setTime(23, 59, 59);
420420
$date->add(new \DateInterval('P' . $this->shareApiLinkDefaultExpireDays() . 'D'));
421421
if ($date < $expirationDate) {
422422
throw new GenericShareException(

0 commit comments

Comments
 (0)