other_role_document_no_request_ok
This commit is contained in:
parent
a9d70fc654
commit
57d5ccea09
@ -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 ? `
|
||||
<button class="sign-button" onclick="signDocument(${document.id}, ${groupId}, true)">
|
||||
Signer le document
|
||||
</button>
|
||||
@ -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 ? `
|
||||
<button class="sign-button" onclick="signDocument(${document.id}, ${groupId}, false)">
|
||||
Signer le document
|
||||
</button>
|
||||
@ -825,6 +829,8 @@ function showRoleDocuments(role: {
|
||||
!document.deadline ||
|
||||
document.signatures.length === 0;
|
||||
|
||||
const canSign = canUserSignDocument(document, role.name, currentUser);
|
||||
|
||||
return `
|
||||
<div class="document-card ${document.visibility} ${isVierge ? 'vierge' : ''}">
|
||||
<div class="document-header">
|
||||
@ -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 = `
|
||||
<div class="modal-overlay" id="signatureModal">
|
||||
@ -1769,10 +1786,22 @@ if (typeof window !== 'undefined') {
|
||||
|
||||
// Ajouter cette fonction helper
|
||||
function canUserAccessDocument(document: any, roleId: string, currentUserRole: string): boolean {
|
||||
// Si l'utilisateur a le même rôle, il peut voir et modifier tous les documents
|
||||
if (roleId === currentUserRole) {
|
||||
return true;
|
||||
// Modification de la logique d'accès
|
||||
if (document.visibility === 'public') {
|
||||
return true; // Peut voir mais pas forcément signer
|
||||
}
|
||||
// Pour les autres rôles, il ne peut que voir les documents publics
|
||||
return document.visibility === 'public';
|
||||
return roleId === currentUserRole;
|
||||
}
|
||||
|
||||
function canUserSignDocument(document: any, role: string, user: Member): boolean {
|
||||
// Vérifier si l'utilisateur a le bon rôle pour ce processus
|
||||
const userRole = user.processRoles?.find(pr => pr.role === role);
|
||||
if (!userRole) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Vérifier si l'utilisateur est dans la liste des signataires
|
||||
return document.signatures?.some((sig: DocumentSignature) =>
|
||||
sig.member && 'id' in sig.member && sig.member.id === user.id && !sig.signed
|
||||
);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user