diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index c2f07b92b8a..37aa26ac475 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -1339,10 +1339,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 2dffad2ea9e..3f876ab3dc8 100644 --- a/apps/files_sharing/src/mixins/SharesMixin.js +++ b/apps/files_sharing/src/mixins/SharesMixin.js @@ -320,7 +320,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 ac06e5ce052..c0e9ccbdc58 100644 --- a/apps/files_sharing/src/views/SharingDetailsTab.vue +++ b/apps/files_sharing/src/views/SharingDetailsTab.vue @@ -976,7 +976,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') } @@ -1139,7 +1143,11 @@ export default { * "sendPasswordByTalk". */ onPasswordProtectedByTalkChange() { - this.queueUpdate('sendPasswordByTalk', 'password') + if (this.isEmailShareType || this.hasUnsavedPassword) { + this.queueUpdate('sendPasswordByTalk', 'password') + } else { + this.queueUpdate('sendPasswordByTalk') + } }, isValidShareAttribute(value) { if ([null, undefined].includes(value)) {