diff options
author | Louis <6653109+artonge@users.noreply.github.com> | 2022-06-09 12:07:20 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-09 12:07:20 +0300 |
commit | 15649fc974b2059b2d41439d9f23267d9147ac3f (patch) | |
tree | 4cbd13377a350581421a2877d77fcfd7c9e69f66 /apps/files_sharing | |
parent | 6ed03a9e6f7b1615f4d0c687f9824827509db5c8 (diff) | |
parent | e35cbd2a6b5abc976ce2cce0b60d0aa6d968a252 (diff) |
Merge pull request #32764 from nextcloud/backport/31981/stable24
[stable24] Temporary passwords fixes 31952
Diffstat (limited to 'apps/files_sharing')
-rw-r--r-- | apps/files_sharing/lib/Controller/ShareAPIController.php | 2 | ||||
-rw-r--r-- | apps/files_sharing/src/components/SharingEntryLink.vue | 20 | ||||
-rw-r--r-- | apps/files_sharing/src/mixins/ShareRequests.js | 3 | ||||
-rw-r--r-- | apps/files_sharing/src/mixins/SharesMixin.js | 5 | ||||
-rw-r--r-- | apps/files_sharing/src/models/Share.js | 21 |
5 files changed, 48 insertions, 3 deletions
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index c0441485132..f531954d5da 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -279,7 +279,7 @@ class ShareAPIController extends OCSController { } elseif ($share->getShareType() === IShare::TYPE_EMAIL) { $result['share_with'] = $share->getSharedWith(); $result['password'] = $share->getPassword(); - $result['password_expiration_time'] = $share->getPasswordExpirationTime(); + $result['password_expiration_time'] = $share->getPasswordExpirationTime() !== null ? $share->getPasswordExpirationTime()->format(\DateTime::ATOM) : null; $result['send_password_by_talk'] = $share->getSendPasswordByTalk(); $result['share_with_displayname'] = $this->getDisplayNameFromAddressBook($share->getSharedWith(), 'EMAIL'); $result['token'] = $share->getToken(); diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue index ee7e8d4b930..638cdf485b0 100644 --- a/apps/files_sharing/src/components/SharingEntryLink.vue +++ b/apps/files_sharing/src/components/SharingEntryLink.vue @@ -192,6 +192,12 @@ @submit="onPasswordSubmit"> {{ t('files_sharing', 'Enter a password') }} </ActionInput> + <ActionText v-if="isEmailShareType && passwordExpirationTime" icon="icon-info"> + {{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }} + </ActionText> + <ActionText v-else-if="isEmailShareType && passwordExpirationTime !== null" icon="icon-error"> + {{ t('files_sharing', 'Password expired') }} + </ActionText> <!-- password protected by Talk --> <ActionCheckbox v-if="isPasswordProtectedByTalkAvailable" @@ -461,6 +467,20 @@ export default { }, }, + passwordExpirationTime() { + if (this.share.passwordExpirationTime === null) { + return null + } + + const expirationTime = moment(this.share.passwordExpirationTime) + + if (expirationTime.diff(moment()) < 0) { + return false + } + + return expirationTime.fromNow() + }, + /** * Is Talk enabled? * diff --git a/apps/files_sharing/src/mixins/ShareRequests.js b/apps/files_sharing/src/mixins/ShareRequests.js index bc6e3bf1644..e2668c15d65 100644 --- a/apps/files_sharing/src/mixins/ShareRequests.js +++ b/apps/files_sharing/src/mixins/ShareRequests.js @@ -103,8 +103,9 @@ export default { const request = await axios.put(shareUrl + `/${id}`, properties) if (!request?.data?.ocs) { throw request + } else { + return request.data.ocs.data } - return true } catch (error) { console.error('Error while updating share', error) if (error.response.status !== 400) { diff --git a/apps/files_sharing/src/mixins/SharesMixin.js b/apps/files_sharing/src/mixins/SharesMixin.js index 950b0355175..daeacfa4b8b 100644 --- a/apps/files_sharing/src/mixins/SharesMixin.js +++ b/apps/files_sharing/src/mixins/SharesMixin.js @@ -235,11 +235,14 @@ export default { this.saving = true this.errors = {} try { - await this.updateShare(this.share.id, properties) + const updatedShare = await this.updateShare(this.share.id, properties) if (propertyNames.indexOf('password') >= 0) { // reset password state after sync this.$delete(this.share, 'newPassword') + + // updates password expiration time after sync + this.share.passwordExpirationTime = updatedShare.password_expiration_time } // clear any previous errors diff --git a/apps/files_sharing/src/models/Share.js b/apps/files_sharing/src/models/Share.js index 87c2fec86f2..5644ce0c2b3 100644 --- a/apps/files_sharing/src/models/Share.js +++ b/apps/files_sharing/src/models/Share.js @@ -359,6 +359,27 @@ export default class Share { } /** + * Password expiration time + * + * @return {string} + * @readonly + * @memberof Share + */ + get passwordExpirationTime() { + return this._share.password_expiration_time + } + + /** + * Password expiration time + * + * @param {string} password exipration time + * @memberof Share + */ + set passwordExpirationTime(passwordExpirationTime) { + this._share.password_expiration_time = passwordExpirationTime + } + + /** * Password protection by Talk of the share * * @return {boolean} |