From 8d707a1e5bc354345b31f4ab26bcfcf61db1c8f7 Mon Sep 17 00:00:00 2001 From: nfebe Date: Fri, 13 Feb 2026 19:32:26 +0100 Subject: [PATCH] fix(sharing): Use link_defaultExpDays for default expiration in web UI The link_defaultExpDays config was only used in the backend share validation but never exposed to the frontend, making it impossible to set a default expiration date different from the maximum. --- apps/files_sharing/lib/Capabilities.php | 8 +++++++- apps/files_sharing/src/services/ConfigService.ts | 16 +++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/apps/files_sharing/lib/Capabilities.php b/apps/files_sharing/lib/Capabilities.php index 7b911cb74dd..5fed5778b90 100644 --- a/apps/files_sharing/lib/Capabilities.php +++ b/apps/files_sharing/lib/Capabilities.php @@ -123,7 +123,13 @@ class Capabilities implements ICapability { $public['multiple_links'] = true; $public['expire_date']['enabled'] = $this->shareManager->shareApiLinkDefaultExpireDate(); if ($public['expire_date']['enabled']) { - $public['expire_date']['days'] = $this->shareManager->shareApiLinkDefaultExpireDays(); + $maxDays = $this->shareManager->shareApiLinkDefaultExpireDays(); + $defaultDays = (int)$this->config->getAppValue('core', 'link_defaultExpDays', (string)$maxDays); + if ($defaultDays > $maxDays) { + $defaultDays = $maxDays; + } + $public['expire_date']['days'] = $maxDays; + $public['expire_date']['default_days'] = $defaultDays; $public['expire_date']['enforced'] = $this->shareManager->shareApiLinkDefaultExpireDateEnforced(); } diff --git a/apps/files_sharing/src/services/ConfigService.ts b/apps/files_sharing/src/services/ConfigService.ts index 7d3a24672ea..6ccc9e595c6 100644 --- a/apps/files_sharing/src/services/ConfigService.ts +++ b/apps/files_sharing/src/services/ConfigService.ts @@ -130,8 +130,11 @@ export default class Config { * Get the default link share expiration date */ get defaultExpirationDate(): Date | null { - if (this.isDefaultExpireDateEnabled && this.defaultExpireDate !== null) { - return new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate)) + if (this.isDefaultExpireDateEnabled) { + const days = this.linkDefaultExpDays ?? this.defaultExpireDate + if (days !== null) { + return new Date(new Date().setDate(new Date().getDate() + days)) + } } return null } @@ -243,12 +246,19 @@ export default class Config { } /** - * Get the default days to link shares expiration + * Get the maximum days to link shares expiration */ get defaultExpireDate(): number | null { return window.OC.appConfig.core.defaultExpireDate } + /** + * Get the default days to link shares expiration + */ + get linkDefaultExpDays(): number | null { + return this._capabilities?.files_sharing?.public?.expire_date?.default_days ?? null + } + /** * Get the default days to internal shares expiration */