no_view_ok

This commit is contained in:
Pascal 2024-11-26 18:02:31 +01:00
parent 6354b8d849
commit b3873e7fca

View File

@ -36,6 +36,7 @@ interface Member {
name: string;
email?: string;
avatar?: string;
processRoles?: Array<{ processId: number | string; role: string }>;
}
let currentUser: Member = membersMock[0];
@ -564,7 +565,6 @@ function showProcessDetails(group: Group, groupId: number) {
// Ajouter le bouton de signature pour tous les documents non vierges en mode dev
const signButton = !isVierge ? `
${totalSignatures > 0 && signedCount < totalSignatures &&
document.signatures.some((sig: DocumentSignature) => sig.member.name === currentUser.name) &&
!document.signatures.find((sig: DocumentSignature) => sig.member.name === currentUser.name && sig.signed) ? `
<button class="sign-button" onclick="signDocument(${document.id}, ${groupId}, true)">
Signer le document
@ -622,21 +622,24 @@ function showProcessDetails(group: Group, groupId: number) {
</div>
<div class="details-section">
<h3>Roles and Documents</h3>
${displayGroup.roles.map((role: { name: string; documents?: any[] }) => `
<div class="role-section">
<h4>${role.name}</h4>
<div class="documents-grid">
${(role.documents || []).length > 0 ?
(role.documents || []).map(document => {
${displayGroup.roles.map((role: { name: string; documents?: any[] }) => {
// Filtrer les documents selon les droits d'accès
const accessibleDocuments = (role.documents || []).filter(doc =>
canUserAccessDocument(doc, role.name, currentUser.processRoles?.[0]?.role || '')
);
return `
<div class="role-section">
<h4>${role.name}</h4>
<div class="documents-grid">
${accessibleDocuments.map(document => {
const isVierge = !document.createdAt ||
!document.deadline ||
document.signatures.length === 0;
// Ajouter le bouton de signature pour tous les documents non vierges en mode dev
const signButton = !isVierge ? `
${document.signatures.length > 0 &&
document.signatures.filter((sig: DocumentSignature) => sig.signed).length < document.signatures.length &&
document.signatures.some((sig: DocumentSignature) => sig.member.name === currentUser.name) &&
!document.signatures.find((sig: DocumentSignature) => sig.member.name === currentUser.name && sig.signed) ? `
<button class="sign-button" onclick="signDocument(${document.id}, ${groupId}, false)">
Signer le document
@ -681,11 +684,11 @@ function showProcessDetails(group: Group, groupId: number) {
${signButton}
</div>
`;
}).join('')
: '<p class="no-documents">No documents available for this role</p>'}
}).join('')}
</div>
</div>
</div>
`).join('')}
`;
}).join('')}
</div>
<div class="details-section">
<h3>Members by Role</h3>
@ -1582,7 +1585,7 @@ function signDocument(documentId: number, processId: number, isCommonDocument: b
${Array.isArray(targetDoc.files) && targetDoc.files.length > 0 ?
targetDoc.files.map((file: any) => `
<div class="file-item">
<span class="file-icon">📄</span>
<span class="file-icon"><EFBFBD><EFBFBD><EFBFBD></span>
<span class="file-name">${file.name}</span>
<a href="${file.url}" class="download-link" download="${file.name}">
<span class="download-icon"></span>
@ -1749,3 +1752,13 @@ if (typeof window !== 'undefined') {
(window as any).signDocument = signDocument;
(window as any).confirmSignature = confirmSignature;
}
// 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 tous les documents
if (roleId === currentUserRole) {
return true;
}
// Sinon, il ne peut voir que les documents publics
return document.visibility === 'public';
}