Skip to content

Commit

Permalink
fix(SharingEntryLink): Show default password before create if any
Browse files Browse the repository at this point in the history
Prevent silent addition of expiration date to shares.

Prevent silent addition for password to shares.

Both now have a `shareRequiresReview` check

Resolves : #48860

Signed-off-by: fenn-cs <[email protected]>

[skip ci]
  • Loading branch information
nfebe authored and backportbot[bot] committed Nov 8, 2024
1 parent fcf11d5 commit 1d4fd9c
Showing 1 changed file with 41 additions and 9 deletions.
50 changes: 41 additions & 9 deletions apps/files_sharing/src/components/SharingEntryLink.vue
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
</div>

<!-- pending actions -->
<NcActions v-if="!pending && (pendingPassword || pendingEnforcedPassword || pendingExpirationDate)"
<NcActions v-if="!pending && pendingDataIsMissing"
class="sharing-entry__actions"
:aria-label="actionsTooltip"
menu-align="right"
Expand Down Expand Up @@ -81,10 +81,18 @@
</template>
</NcActionInput>

<NcActionCheckbox v-if="hasDefaultExpirationDate"
:checked.sync="defaultExpirationDateEnabled"
:disabled="pendingEnforcedExpirationDate || saving"
class="share-link-expiration-date-checkbox"
@change="onDefaultExpirationDateEnabledChange">
{{ config.enforcePasswordForPublicLink ? t('files_sharing', 'Enable link expiration (enforced)') : t('files_sharing', 'Enable link expiration') }}
</NcActionCheckbox>

<!-- expiration date -->
<NcActionInput v-if="pendingExpirationDate"
<NcActionInput v-if="(hasDefaultExpirationDate || pendingEnforcedExpirationDate) && defaultExpirationDateEnabled"
class="share-link-expire-date"
:label="t('files_sharing', 'Expiration date (enforced)')"
:label="pendingEnforcedExpirationDate ? t('files_sharing', 'Enter expiration date (enforced)') : t('files_sharing', 'Enter expiration date')"
:disabled="saving"
:is-native-picker="true"
:hide-label="true"
Expand Down Expand Up @@ -287,6 +295,7 @@ export default {
shareCreationComplete: false,
copySuccess: true,
copied: false,
defaultExpirationDateEnabled: false,

// Are we waiting for password/expiration date
pending: false,
Expand Down Expand Up @@ -460,14 +469,28 @@ export default {
*
* @return {boolean}
*/
pendingDataIsMissing() {
return this.pendingPassword || this.pendingEnforcedPassword || this.pendingEnforcedExpirationDate
},
pendingPassword() {
return this.config.enableLinkPasswordByDefault && this.share && !this.share.id
return this.config.enableLinkPasswordByDefault && this.isPendingShare
},
pendingEnforcedPassword() {
return this.config.enforcePasswordForPublicLink && this.share && !this.share.id
return this.config.enforcePasswordForPublicLink && this.isPendingShare
},
pendingEnforcedExpirationDate() {
return this.config.isDefaultExpireDateEnforced && this.isPendingShare
},
hasDefaultExpirationDate() {
return (this.config.defaultExpirationDate instanceof Date || !isNaN(new Date(this.config.defaultExpirationDate).getTime())) && this.isPendingShare
},
pendingExpirationDate() {
return this.config.isDefaultExpireDateEnforced && this.share && !this.share.id

isPendingShare() {
return !!(this.share && !this.share.id)
},

shareRequiresReview() {
return this.defaultExpirationDateEnabled || this.config.enableLinkPasswordByDefault
},

sharePolicyHasRequiredProperties() {
Expand Down Expand Up @@ -570,6 +593,10 @@ export default {
return this.share.isFileRequest
},
},
mounted() {
this.defaultExpirationDateEnabled = this.config.defaultExpirationDate instanceof Date
this.share.expireDate = this.defaultExpirationDateEnabled ? this.formatDateToString(this.config.defaultExpirationDate) : ''
},

methods: {
/**
Expand All @@ -592,8 +619,10 @@ export default {
}

this.logger.debug('Missing required properties?', this.requiredPropertiesMissing)
// do not push yet if we need a password or an expiration date: show pending menu
if (this.sharePolicyHasRequiredProperties && this.requiredPropertiesMissing) {
// Do not push yet if we need a password or an expiration date: show pending menu
// A share would require a review for example is default expiration date is set but not enforced, this allows
// the user to review the share and remove the expiration date if they don't want it
if ((this.sharePolicyHasRequiredProperties && this.requiredPropertiesMissing) || this.shareRequiresReview) {
this.pending = true
this.shareCreationComplete = false

Expand Down Expand Up @@ -827,6 +856,9 @@ export default {
this.onPasswordSubmit()
this.onNoteSubmit()
},
onDefaultExpirationDateEnabledChange(enabled) {
this.share.expireDate = enabled ? this.formatDateToString(this.config.defaultExpirationDate) : ''
},

/**
* Cancel the share creation
Expand Down

0 comments on commit 1d4fd9c

Please sign in to comment.