role_document_view_ok

This commit is contained in:
Pascal 2024-11-27 10:25:26 +01:00
parent b3873e7fca
commit a9d70fc654
2 changed files with 41 additions and 29 deletions

View File

@ -1221,9 +1221,7 @@ body {
background: white;
padding: 20px;
border-radius: 8px;
width: 90%;
max-width: 600px;
max-height: 90vh;
width: 97%;
}
.modal-header {

View File

@ -782,20 +782,33 @@ function showRoleDocuments(role: {
const detailsArea = document.createElement('div');
detailsArea.id = `role-documents-${displayRole.name}`;
detailsArea.className = 'process-details';
// Filtrer les documents accessibles
const accessibleDocuments = (displayRole.documents || []).filter((doc: {
name: string;
visibility: string;
createdAt: string | null | undefined;
deadline: string | null | undefined;
signatures: DocumentSignature[];
id: number;
description?: string;
status?: string;
}) =>
canUserAccessDocument(doc, displayRole.name, currentUser.processRoles?.[0]?.role || '')
);
detailsArea.innerHTML = `
<div class="process-details-header">
<h2>${displayRole.name} Documents</h2>
<div class="header-buttons">
<button class="close-btn" onclick="closeRoleDocuments('${displayRole.name}')"></button>
<div class="modal-content-document">
<div class="details-header">
<h2>${displayRole.name} Documents</h2>
<div class="header-buttons">
<button class="close-btn" onclick="closeRoleDocuments('${displayRole.name}')"></button>
</div>
</div>
</div>
<div class="process-details-content">
<div class="details-section">
<h3>Documents</h3>
<div class="documents-grid">
${(displayRole.documents || []).length > 0 ?
(displayRole.documents || []).map((document: {
<div class="process-details-content">
<div class="details-section">
<h3>Documents</h3>
<div class="documents-grid">
${accessibleDocuments.map((document: {
name: string;
visibility: string;
createdAt: string | null | undefined;
@ -844,21 +857,22 @@ function showRoleDocuments(role: {
</div>
` : `
<p>Document vierge - En attente de création</p>
<button class="new-request-btn" onclick="newRequest({
processId: ${group.id},
processName: '${group.name}',
roleId: ${role.id},
roleName: '${role.name}',
documentId: ${document.id},
documentName: '${document.name}'
})">New request</button>
${canUserAccessDocument(document, displayRole.name, currentUser.processRoles?.[0]?.role || '') ? `
<button class="new-request-btn" onclick="newRequest({
processId: ${group.id},
processName: '${group.name}',
roleId: ${role.id},
roleName: '${role.name}',
documentId: ${document.id},
documentName: '${document.name}'
})">New request</button>
` : ''}
`}
</div>
</div>
`;
}).join('')
: '<p class="no-documents">No documents available for this role</p>'
}
}).join('')}
</div>
</div>
</div>
</div>
@ -1585,7 +1599,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"><EFBFBD><EFBFBD><EFBFBD></span>
<span class="file-icon"></span>
<span class="file-name">${file.name}</span>
<a href="${file.url}" class="download-link" download="${file.name}">
<span class="download-icon"></span>
@ -1755,10 +1769,10 @@ 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 tous les documents
// Si l'utilisateur a le même rôle, il peut voir et modifier tous les documents
if (roleId === currentUserRole) {
return true;
}
// Sinon, il ne peut voir que les documents publics
// Pour les autres rôles, il ne peut que voir les documents publics
return document.visibility === 'public';
}