diff --git a/src/Components/RightSidebar/RequestSignatureTab.vue b/src/Components/RightSidebar/RequestSignatureTab.vue index f182b9cfc..b3327bbae 100644 --- a/src/Components/RightSidebar/RequestSignatureTab.vue +++ b/src/Components/RightSidebar/RequestSignatureTab.vue @@ -7,6 +7,9 @@ {{ t('libresign', 'This document has been certified with no changes allowed. You cannot add more signers to this document.') }} + + {{ t('libresign', 'Some signers use identification methods that have been disabled. Please remove or update them before requesting signatures.') }} + @@ -132,11 +135,7 @@ :size="size" :name="modalTitle" @closing="filesStore.disableIdentifySigner()"> - - {{ t('libresign', 'The identification method "{method}" used by this signer has been disabled by the system administrator.', { method: disabledMethodName }) }} - - + :methods="methods" + :disabled="isSignerMethodDisabled" /> @@ -348,6 +348,10 @@ export default { return false } + if (!this.canSignerActInOrder(signer)) { + return false + } + return !!method } }, @@ -377,6 +381,24 @@ export default { return this.canSignerActInOrder(signer) } }, + hasSignersWithDisabledMethods() { + const file = this.filesStore.getFile() + if (!file?.signers) { + return false + } + + return file.signers.some(signer => { + if (signer.signed) { + return false + } + const method = signer.identifyMethods?.[0]?.method + if (!method) { + return false + } + const methodConfig = this.methods.find(m => m.name === method) + return !methodConfig?.enabled + }) + }, showSaveButton() { if (!this.filesStore.canSave()) { return false @@ -392,12 +414,19 @@ export default { return false } + if (this.hasSignersWithDisabledMethods) { + return false + } + return true }, showRequestButton() { if (!this.filesStore.canSave()) { return false } + if (this.hasSignersWithDisabledMethods) { + return false + } return this.hasDraftSigners }, hasDraftSigners() { @@ -429,14 +458,16 @@ export default { return this.t('libresign', 'Add new signer') }, enabledMethods() { - const enabledMethods = this.methods.filter(method => method.enabled) - if (Object.keys(this.signerToEdit).length > 0 && this.signerToEdit.identifyMethods?.length) { const signerMethod = this.signerToEdit.identifyMethods[0].method - return enabledMethods.filter(method => method.name === signerMethod) + const signerMethodConfig = this.methods.find(m => m.name === signerMethod) + + if (signerMethodConfig) { + return [signerMethodConfig] + } } - return enabledMethods + return this.methods.filter(method => method.enabled) }, isSignerMethodDisabled() { if (Object.keys(this.signerToEdit).length > 0 && this.signerToEdit.identifyMethods?.length) { @@ -494,6 +525,14 @@ export default { return iconMap[`svg${name.charAt(0).toUpperCase() + name.slice(1)}`] || iconMap.svgAccount }, canSignerActInOrder(signer) { + const method = signer.identifyMethods?.[0]?.method + if (method) { + const methodConfig = this.methods.find(m => m.name === method) + if (!methodConfig?.enabled) { + return false + } + } + if (!this.isOrderedNumeric) { return true }