Skip to content

Commit f91bc05

Browse files
nfebebackportbot[bot]
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 87d6e22 commit f91bc05

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
@@ -234,7 +234,7 @@ protected function formatShare(IShare $share, ?Node $recipientNode = null): arra
234234
$expiration = $share->getExpirationDate();
235235
if ($expiration !== null) {
236236
$expiration->setTimezone($this->dateTimeZone->getTimeZone());
237-
$result['expiration'] = $expiration->format('Y-m-d 00:00:00');
237+
$result['expiration'] = $expiration->format('Y-m-d H:i:s');
238238
}
239239

240240
if ($share->getShareType() === IShare::TYPE_USER) {

lib/private/Share20/Manager.php

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

305305
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
306306
$date->setTime(0, 0, 0);
@@ -319,7 +319,7 @@ protected function validateExpirationDateInternal(IShare $share) {
319319

320320
if ($fullId === null && $expirationDate === null && $defaultExpireDate) {
321321
$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
322-
$expirationDate->setTime(0, 0, 0);
322+
$expirationDate->setTime(23, 59, 59);
323323
$days = (int)$this->config->getAppValue('core', $configProp, (string)$defaultExpireDays);
324324
if ($days > $defaultExpireDays) {
325325
$days = $defaultExpireDays;
@@ -334,7 +334,7 @@ protected function validateExpirationDateInternal(IShare $share) {
334334
}
335335

336336
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
337-
$date->setTime(0, 0, 0);
337+
$date->setTime(23, 59, 59);
338338
$date->add(new \DateInterval('P' . $defaultExpireDays . 'D'));
339339
if ($date < $expirationDate) {
340340
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);
@@ -378,7 +378,7 @@ protected function validateExpirationDateLink(IShare $share) {
378378
if (!($share->getNoExpirationDate() && !$isEnforced)) {
379379
if ($expirationDate !== null) {
380380
$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
381-
$expirationDate->setTime(0, 0, 0);
381+
$expirationDate->setTime(23, 59, 59);
382382

383383
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
384384
$date->setTime(0, 0, 0);
@@ -397,7 +397,7 @@ protected function validateExpirationDateLink(IShare $share) {
397397

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

402402
$days = (int)$this->config->getAppValue('core', 'link_defaultExpDays', (string)$this->shareApiLinkDefaultExpireDays());
403403
if ($days > $this->shareApiLinkDefaultExpireDays()) {
@@ -413,7 +413,7 @@ protected function validateExpirationDateLink(IShare $share) {
413413
}
414414

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

0 commit comments

Comments
 (0)