mirror of
https://github.com/nextcloud/server.git
synced 2026-06-09 08:44:07 -04:00
fix(files_sharing): Stop infinite loop blocking link share requests
Fixes infinite loop preventing share link creation requests from being sent to the backend. Signed-off-by: nfebe <fenn25.fn@gmail.com>
This commit is contained in:
parent
2060802a0c
commit
e7dc141fd3
1 changed files with 23 additions and 14 deletions
|
|
@ -82,7 +82,7 @@
|
|||
</template>
|
||||
</NcActionInput>
|
||||
|
||||
<NcActionCheckbox v-if="hasDefaultExpirationDate"
|
||||
<NcActionCheckbox v-if="pendingDefaultExpirationDate"
|
||||
:checked.sync="defaultExpirationDateEnabled"
|
||||
:disabled="pendingEnforcedExpirationDate || saving"
|
||||
class="share-link-expiration-date-checkbox"
|
||||
|
|
@ -91,7 +91,7 @@
|
|||
</NcActionCheckbox>
|
||||
|
||||
<!-- expiration date -->
|
||||
<NcActionInput v-if="(hasDefaultExpirationDate || pendingEnforcedExpirationDate) && defaultExpirationDateEnabled"
|
||||
<NcActionInput v-if="(pendingDefaultExpirationDate || pendingEnforcedExpirationDate) && defaultExpirationDateEnabled"
|
||||
class="share-link-expire-date"
|
||||
:label="pendingEnforcedExpirationDate ? t('files_sharing', 'Enter expiration date (enforced)') : t('files_sharing', 'Enter expiration date')"
|
||||
:disabled="saving"
|
||||
|
|
@ -107,7 +107,7 @@
|
|||
</template>
|
||||
</NcActionInput>
|
||||
|
||||
<NcActionButton @click.prevent.stop="onNewLinkShare">
|
||||
<NcActionButton @click.prevent.stop="onNewLinkShare(true)">
|
||||
<template #icon>
|
||||
<CheckIcon :size="20" />
|
||||
</template>
|
||||
|
|
@ -472,7 +472,7 @@ export default {
|
|||
* @return {boolean}
|
||||
*/
|
||||
pendingDataIsMissing() {
|
||||
return this.pendingPassword || this.pendingEnforcedPassword || this.pendingEnforcedExpirationDate
|
||||
return this.pendingPassword || this.pendingEnforcedPassword || this.pendingDefaultExpirationDate || this.pendingEnforcedExpirationDate
|
||||
},
|
||||
pendingPassword() {
|
||||
return this.config.enableLinkPasswordByDefault && this.isPendingShare
|
||||
|
|
@ -483,18 +483,13 @@ export default {
|
|||
pendingEnforcedExpirationDate() {
|
||||
return this.config.isDefaultExpireDateEnforced && this.isPendingShare
|
||||
},
|
||||
hasDefaultExpirationDate() {
|
||||
pendingDefaultExpirationDate() {
|
||||
return (this.config.defaultExpirationDate instanceof Date || !isNaN(new Date(this.config.defaultExpirationDate).getTime())) && this.isPendingShare
|
||||
},
|
||||
|
||||
isPendingShare() {
|
||||
return !!(this.share && !this.share.id)
|
||||
},
|
||||
|
||||
shareRequiresReview() {
|
||||
return this.defaultExpirationDateEnabled || this.config.enableLinkPasswordByDefault
|
||||
},
|
||||
|
||||
sharePolicyHasRequiredProperties() {
|
||||
return this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced
|
||||
},
|
||||
|
|
@ -604,9 +599,23 @@ export default {
|
|||
|
||||
methods: {
|
||||
/**
|
||||
* Create a new share link and append it to the list
|
||||
* Check if the share requires review
|
||||
*
|
||||
* @param {boolean} shareReviewComplete if the share was reviewed
|
||||
* @return {boolean}
|
||||
*/
|
||||
async onNewLinkShare() {
|
||||
shareRequiresReview(shareReviewComplete) {
|
||||
// If a user clicks 'Create share' it means they have reviewed the share
|
||||
if (shareReviewComplete) {
|
||||
return false
|
||||
}
|
||||
return this.defaultExpirationDateEnabled || this.config.enableLinkPasswordByDefault
|
||||
},
|
||||
/**
|
||||
* Create a new share link and append it to the list
|
||||
* @param {boolean} shareReviewComplete if the share was reviewed
|
||||
*/
|
||||
async onNewLinkShare(shareReviewComplete = false) {
|
||||
this.logger.debug('onNewLinkShare called (with this.share)', this.share)
|
||||
// do not run again if already loading
|
||||
if (this.loading) {
|
||||
|
|
@ -626,11 +635,11 @@ export default {
|
|||
// 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) {
|
||||
if ((this.sharePolicyHasEnforcedProperties && this.enforcedPropertiesMissing) || this.shareRequiresReview(shareReviewComplete === true)) {
|
||||
this.pending = true
|
||||
this.shareCreationComplete = false
|
||||
|
||||
this.logger.info('Share policy requires mandated properties (password)...')
|
||||
this.logger.info('Share policy requires a review or has mandated properties (password, expirationDate)...')
|
||||
|
||||
// ELSE, show the pending popovermenu
|
||||
// if password default or enforced, pre-fill with random one
|
||||
|
|
|
|||
Loading…
Reference in a new issue