diff options
Diffstat (limited to 'apps/files_sharing/src/components/SharingEntryLink.vue')
-rw-r--r-- | apps/files_sharing/src/components/SharingEntryLink.vue | 63 |
1 files changed, 27 insertions, 36 deletions
diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue index 44c3c986e17..c214bc12503 100644 --- a/apps/files_sharing/src/components/SharingEntryLink.vue +++ b/apps/files_sharing/src/components/SharingEntryLink.vue @@ -29,6 +29,9 @@ <h5 :title="title"> {{ title }} </h5> + <p v-if="subtitle"> + {{ subtitle }} + </p> </div> <!-- clipboard --> @@ -321,7 +324,6 @@ <script> import { generateUrl } from '@nextcloud/router' -import axios from '@nextcloud/axios' import Vue from 'vue' import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' @@ -335,11 +337,10 @@ import Actions from '@nextcloud/vue/dist/Components/Actions' import Avatar from '@nextcloud/vue/dist/Components/Avatar' import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip' +import GeneratePassword from '../utils/GeneratePassword' import Share from '../models/Share' import SharesMixin from '../mixins/SharesMixin' -const passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789' - export default { name: 'SharingEntryLink', @@ -406,7 +407,6 @@ export default { /** * Link share label - * TODO: allow editing * @returns {string} */ title() { @@ -424,6 +424,11 @@ export default { }) } if (this.share.label && this.share.label.trim() !== '') { + if (this.isEmailShareType) { + return t('files_sharing', 'Mail share ({label})', { + label: this.share.label.trim(), + }) + } return t('files_sharing', 'Share link ({label})', { label: this.share.label.trim(), }) @@ -436,6 +441,18 @@ export default { }, /** + * Show the email on a second line if a label is set for mail shares + * @returns {string} + */ + subtitle() { + if (this.isEmailShareType + && this.title !== this.share.shareWith) { + return this.share.shareWith + } + return null + }, + + /** * Does the current share have an expiration date * @returns {boolean} */ @@ -472,7 +489,7 @@ export default { }, async set(enabled) { // TODO: directly save after generation to make sure the share is always protected - Vue.set(this.share, 'password', enabled ? await this.generatePassword() : '') + Vue.set(this.share, 'password', enabled ? await GeneratePassword() : '') Vue.set(this.share, 'newPassword', this.share.password) }, }, @@ -635,7 +652,7 @@ export default { shareDefaults.expiration = this.config.defaultExpirationDateString } if (this.config.enableLinkPasswordByDefault) { - shareDefaults.password = await this.generatePassword() + shareDefaults.password = await GeneratePassword() } // do not push yet if we need a password or an expiration date: show pending menu @@ -658,7 +675,7 @@ export default { // ELSE, show the pending popovermenu // if password enforced, pre-fill with random one if (this.config.enforcePasswordForPublicLink) { - shareDefaults.password = await this.generatePassword() + shareDefaults.password = await GeneratePassword() } // create share & close menu @@ -781,35 +798,6 @@ export default { this.queueUpdate('label') } }, - - /** - * Generate a valid policy password or - * request a valid password if password_policy - * is enabled - * - * @returns {string} a valid password - */ - async generatePassword() { - // password policy is enabled, let's request a pass - if (this.config.passwordPolicy.api && this.config.passwordPolicy.api.generate) { - try { - const request = await axios.get(this.config.passwordPolicy.api.generate) - if (request.data.ocs.data.password) { - return request.data.ocs.data.password - } - } catch (error) { - console.info('Error generating password from password_policy', error) - } - } - - // generate password of 10 length based on passwordSet - return Array(10).fill(0) - .reduce((prev, curr) => { - prev += passwordSet.charAt(Math.floor(Math.random() * passwordSet.length)) - return prev - }, '') - }, - async copyLink() { try { await this.$copyText(this.shareLink) @@ -933,6 +921,9 @@ export default { overflow: hidden; white-space: nowrap; } + p { + color: var(--color-text-maxcontrast); + } } &:not(.sharing-entry--share) &__actions { |