diff options
-rw-r--r-- | apps/files_sharing/lib/Capabilities.php | 5 | ||||
-rw-r--r-- | apps/settings/lib/Settings/Admin/Sharing.php | 2 | ||||
-rw-r--r-- | core/AppInfo/ConfigLexicon.php | 13 | ||||
-rw-r--r-- | core/Controller/OCJSController.php | 3 | ||||
-rw-r--r-- | lib/private/Share20/Manager.php | 2 | ||||
-rw-r--r-- | lib/private/Template/JSConfigHelper.php | 6 | ||||
-rw-r--r-- | lib/private/TemplateLayout.php | 3 |
7 files changed, 29 insertions, 5 deletions
diff --git a/apps/files_sharing/lib/Capabilities.php b/apps/files_sharing/lib/Capabilities.php index b4fe5a1bb73..460fa7f668a 100644 --- a/apps/files_sharing/lib/Capabilities.php +++ b/apps/files_sharing/lib/Capabilities.php @@ -7,8 +7,10 @@ */ namespace OCA\Files_Sharing; +use OC\Core\AppInfo\ConfigLexicon; use OCP\Capabilities\ICapability; use OCP\Constants; +use OCP\IAppConfig; use OCP\IConfig; use OCP\Share\IManager; @@ -21,6 +23,7 @@ class Capabilities implements ICapability { public function __construct( private IConfig $config, + private readonly IAppConfig $appConfig, private IManager $shareManager, ) { } @@ -110,7 +113,7 @@ class Capabilities implements ICapability { if ($public['password']['enforced']) { $public['password']['askForOptionalPassword'] = false; } else { - $public['password']['askForOptionalPassword'] = ($this->config->getAppValue('core', 'shareapi_enable_link_password_by_default', 'no') === 'yes'); + $public['password']['askForOptionalPassword'] = $this->appConfig->getValueBool('core', ConfigLexicon::SHARE_LINK_PASSWORD_DEFAULT); } $public['expire_date'] = []; diff --git a/apps/settings/lib/Settings/Admin/Sharing.php b/apps/settings/lib/Settings/Admin/Sharing.php index e038b2a6231..ec5dcdf624d 100644 --- a/apps/settings/lib/Settings/Admin/Sharing.php +++ b/apps/settings/lib/Settings/Admin/Sharing.php @@ -68,7 +68,7 @@ class Sharing implements IDelegatedSettings { 'excludeGroups' => $this->config->getAppValue('core', 'shareapi_exclude_groups', 'no'), 'excludeGroupsList' => json_decode($excludedGroups, true) ?? [], 'publicShareDisclaimerText' => $this->config->getAppValue('core', 'shareapi_public_link_disclaimertext'), - 'enableLinkPasswordByDefault' => $this->getHumanBooleanConfig('core', 'shareapi_enable_link_password_by_default'), + 'enableLinkPasswordByDefault' => $this->appConfig->getValueBool('core', ConfigLexicon::SHARE_LINK_PASSWORD_DEFAULT), 'defaultPermissions' => (int)$this->config->getAppValue('core', 'shareapi_default_permissions', (string)Constants::PERMISSION_ALL), 'defaultInternalExpireDate' => $this->getHumanBooleanConfig('core', 'shareapi_default_internal_expire_date'), 'internalExpireAfterNDays' => $this->config->getAppValue('core', 'shareapi_internal_expire_after_n_days', '7'), diff --git a/core/AppInfo/ConfigLexicon.php b/core/AppInfo/ConfigLexicon.php index df8243019ad..064ea56b024 100644 --- a/core/AppInfo/ConfigLexicon.php +++ b/core/AppInfo/ConfigLexicon.php @@ -22,6 +22,9 @@ use OCP\Config\ValueType; class ConfigLexicon implements ILexicon { public const SHAREAPI_ALLOW_FEDERATION_ON_PUBLIC_SHARES = 'shareapi_allow_federation_on_public_shares'; public const SHARE_CUSTOM_TOKEN = 'shareapi_allow_custom_tokens'; + public const SHARE_LINK_PASSWORD_DEFAULT = 'shareapi_enable_link_password_by_default'; + public const SHARE_LINK_PASSWORD_ENFORCED = 'shareapi_enforce_links_password'; + public const USER_LANGUAGE = 'lang'; public const LASTCRON_TIMESTAMP = 'lastcron'; @@ -49,6 +52,16 @@ class ConfigLexicon implements ILexicon { lazy: true, note: 'Shares with guessable tokens may be accessed easily. Shares with custom tokens will continue to be accessible after this setting has been disabled.', ), + new Entry(self::SHARE_LINK_PASSWORD_DEFAULT, ValueType::BOOL, false, 'Always ask for a password when sharing document'), + new Entry( + key: self::SHARE_LINK_PASSWORD_ENFORCED, + type: ValueType::BOOL, + defaultRaw: fn (Preset $p): bool => match ($p) { + Preset::SCHOOL, Preset::UNIVERSITY, Preset::SHARED, Preset::SMALL, Preset::MEDIUM, Preset::LARGE => true, + default => false, + }, + definition: 'Enforce password protection when sharing document' + ), new Entry(self::LASTCRON_TIMESTAMP, ValueType::INT, 0, 'timestamp of last cron execution'), ]; } diff --git a/core/Controller/OCJSController.php b/core/Controller/OCJSController.php index ea372b43b2e..083ad4b209f 100644 --- a/core/Controller/OCJSController.php +++ b/core/Controller/OCJSController.php @@ -20,6 +20,7 @@ use OCP\AppFramework\Http\Attribute\OpenAPI; use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\DataDisplayResponse; use OCP\Defaults; +use OCP\IAppConfig; use OCP\IConfig; use OCP\IGroupManager; use OCP\IInitialStateService; @@ -43,6 +44,7 @@ class OCJSController extends Controller { ISession $session, IUserSession $userSession, IConfig $config, + IAppConfig $appConfig, IGroupManager $groupManager, IniGetWrapper $iniWrapper, IURLGenerator $urlGenerator, @@ -62,6 +64,7 @@ class OCJSController extends Controller { $session, $userSession->getUser(), $config, + $appConfig, $groupManager, $iniWrapper, $urlGenerator, diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 855bb173d56..28f29d6b20f 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -1778,7 +1778,7 @@ class Manager implements IManager { } } } - return $this->config->getAppValue('core', 'shareapi_enforce_links_password', 'no') === 'yes'; + return $this->appConfig->getValueBool('core', ConfigLexicon::SHARE_LINK_PASSWORD_ENFORCED); } /** diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php index 07e557d0706..044fa8147a0 100644 --- a/lib/private/Template/JSConfigHelper.php +++ b/lib/private/Template/JSConfigHelper.php @@ -10,6 +10,7 @@ namespace OC\Template; use bantu\IniGetWrapper\IniGetWrapper; use OC\Authentication\Token\IProvider; use OC\CapabilitiesManager; +use OC\Core\AppInfo\ConfigLexicon; use OC\Files\FilenameValidator; use OC\Share\Share; use OCA\Provisioning_API\Controller\AUserDataOCSController; @@ -22,6 +23,7 @@ use OCP\Authentication\Token\IToken; use OCP\Constants; use OCP\Defaults; use OCP\Files\FileInfo; +use OCP\IAppConfig; use OCP\IConfig; use OCP\IGroupManager; use OCP\IInitialStateService; @@ -50,6 +52,7 @@ class JSConfigHelper { protected ISession $session, protected ?IUser $currentUser, protected IConfig $config, + protected readonly IAppConfig $appConfig, protected IGroupManager $groupManager, protected IniGetWrapper $iniWrapper, protected IURLGenerator $urlGenerator, @@ -94,8 +97,7 @@ class JSConfigHelper { } } - $enableLinkPasswordByDefault = $this->config->getAppValue('core', 'shareapi_enable_link_password_by_default', 'no'); - $enableLinkPasswordByDefault = $enableLinkPasswordByDefault === 'yes'; + $enableLinkPasswordByDefault = $this->appConfig->getValueBool('core', ConfigLexicon::SHARE_LINK_PASSWORD_DEFAULT); $defaultExpireDateEnabled = $this->config->getAppValue('core', 'shareapi_default_expire_date', 'no') === 'yes'; $defaultExpireDate = $enforceDefaultExpireDate = null; if ($defaultExpireDateEnabled) { diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index cfc387d2164..42861eddc0d 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -20,6 +20,7 @@ use OC\Template\JSResourceLocator; use OCP\App\IAppManager; use OCP\AppFramework\Http\TemplateResponse; use OCP\Defaults; +use OCP\IAppConfig; use OCP\IConfig; use OCP\IInitialStateService; use OCP\INavigationManager; @@ -44,6 +45,7 @@ class TemplateLayout { public function __construct( private IConfig $config, + private readonly IAppConfig $appConfig, private IAppManager $appManager, private InitialStateService $initialState, private INavigationManager $navigationManager, @@ -223,6 +225,7 @@ class TemplateLayout { \OC::$server->getSession(), \OC::$server->getUserSession()->getUser(), $this->config, + $this->appConfig, \OC::$server->getGroupManager(), \OC::$server->get(IniGetWrapper::class), \OC::$server->getURLGenerator(), |