diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index 1520ef2e61f..d83ac213441 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -1344,10 +1344,13 @@ class ShareAPIController extends OCSController { $share->setPermissions($permissions); } - if ($password === '') { - $share->setPassword(null); - } elseif ($password !== null) { - $share->setPassword($password); + $passwordParamSent = $password !== null; + if ($passwordParamSent) { + if ($password === '') { + $share->setPassword(null); + } else { + $share->setPassword($password); + } } if ($label !== null) { diff --git a/apps/files_sharing/src/mixins/SharesMixin.js b/apps/files_sharing/src/mixins/SharesMixin.js index 4599085e6dd..1a6e235e61b 100644 --- a/apps/files_sharing/src/mixins/SharesMixin.js +++ b/apps/files_sharing/src/mixins/SharesMixin.js @@ -316,7 +316,9 @@ export default { // share api controller accepts for (const name of propertyNames) { if (name === 'password') { - properties[name] = this.share.newPassword ?? this.share.password + if (this.share.newPassword !== undefined) { + properties[name] = this.share.newPassword + } continue } diff --git a/apps/files_sharing/src/views/SharingDetailsTab.vue b/apps/files_sharing/src/views/SharingDetailsTab.vue index 9b335ef1c7c..10678839204 100644 --- a/apps/files_sharing/src/views/SharingDetailsTab.vue +++ b/apps/files_sharing/src/views/SharingDetailsTab.vue @@ -1054,7 +1054,11 @@ export default { async saveShare() { const permissionsAndAttributes = ['permissions', 'attributes', 'note', 'expireDate'] - const publicShareAttributes = ['label', 'password', 'hideDownload'] + const publicShareAttributes = ['label', 'hideDownload'] + // Only include password if it's being actively changed + if (this.hasUnsavedPassword) { + publicShareAttributes.push('password') + } if (this.config.allowCustomTokens) { publicShareAttributes.push('token') } @@ -1221,7 +1225,11 @@ export default { * "sendPasswordByTalk". */ onPasswordProtectedByTalkChange() { - this.queueUpdate('sendPasswordByTalk', 'password') + if (this.isEmailShareType || this.hasUnsavedPassword) { + this.queueUpdate('sendPasswordByTalk', 'password') + } else { + this.queueUpdate('sendPasswordByTalk') + } }, isValidShareAttribute(value) {