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
}