diff --git a/src/pages/signature/signature.ts b/src/pages/signature/signature.ts index ee59750..b489ef1 100755 --- a/src/pages/signature/signature.ts +++ b/src/pages/signature/signature.ts @@ -561,11 +561,13 @@ function showProcessDetails(group: Group, groupId: number) { const signedCount = document.signatures?.filter((sig: DocumentSignature) => sig.signed).length || 0; const percentage = totalSignatures > 0 ? (signedCount / totalSignatures) * 100 : 0; const isVierge = !document.createdAt || !document.deadline || !document.signatures?.length; + const canSign = document.signatures?.some((sig: DocumentSignature) => + sig.member && 'id' in sig.member && sig.member.id === currentUser.id && !sig.signed + ); // Ajouter le bouton de signature pour tous les documents non vierges en mode dev const signButton = !isVierge ? ` - ${totalSignatures > 0 && signedCount < totalSignatures && - !document.signatures.find((sig: DocumentSignature) => sig.member.name === currentUser.name && sig.signed) ? ` + ${totalSignatures > 0 && signedCount < totalSignatures && canSign ? ` @@ -637,10 +639,12 @@ function showProcessDetails(group: Group, groupId: number) { !document.deadline || document.signatures.length === 0; + const canSign = canUserSignDocument(document, role.name, currentUser); + const signButton = !isVierge ? ` ${document.signatures.length > 0 && document.signatures.filter((sig: DocumentSignature) => sig.signed).length < document.signatures.length && - !document.signatures.find((sig: DocumentSignature) => sig.member.name === currentUser.name && sig.signed) ? ` + canSign ? ` @@ -825,6 +829,8 @@ function showRoleDocuments(role: { !document.deadline || document.signatures.length === 0; + const canSign = canUserSignDocument(document, role.name, currentUser); + return `
@@ -1543,6 +1549,17 @@ function signDocument(documentId: number, processId: number, isCommonDocument: b throw new Error('Document non trouvé'); } + const canSign = isCommonDocument ? + targetDoc.signatures?.some((sig: DocumentSignature) => + sig.member?.name === currentUser?.name && !sig.signed + ) : + canUserSignDocument(targetDoc, currentUser?.name, currentUser); + + if (!canSign) { + showAlert("Vous n'avez pas les droits nécessaires pour signer ce document."); + return; + } + // Créer et insérer la modal directement dans le body const modalHtml = `