can_sign_by_role
This commit is contained in:
parent
44272137c5
commit
18cc913c21
@ -1,186 +1,105 @@
|
||||
// Définir les rôles autorisés
|
||||
const VALID_ROLES = [
|
||||
"User",
|
||||
"Process",
|
||||
"Member",
|
||||
"Peer",
|
||||
"Payment",
|
||||
"Deposit",
|
||||
"Artefact",
|
||||
"Resolve",
|
||||
"Backup"
|
||||
];
|
||||
|
||||
function createProcessRole(processId, roleName) {
|
||||
if (!VALID_ROLES.includes(roleName)) {
|
||||
throw new Error(`Role "${roleName}" is not valid.`);
|
||||
}
|
||||
return { processId, role: roleName };
|
||||
}
|
||||
|
||||
export const membersMock = [
|
||||
// Processus 1
|
||||
{
|
||||
id: "USR-001",
|
||||
name: "Alice Johnson",
|
||||
avatar: "AJ",
|
||||
email: "alice.j@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-001", "User"),
|
||||
createProcessRole("PROC-002", "Process"),
|
||||
createProcessRole("PROC-003", "Member")
|
||||
]
|
||||
id: 1,
|
||||
name: "Alice",
|
||||
avatar: "A",
|
||||
email: "alice@company.com",
|
||||
processRoles: [{ processId: 1, role: "User" }]
|
||||
},
|
||||
{
|
||||
id: "USR-002",
|
||||
name: "Bob Smith",
|
||||
avatar: "BS",
|
||||
email: "bob.s@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-001", "Process"),
|
||||
createProcessRole("PROC-004", "Payment")
|
||||
]
|
||||
id: 2,
|
||||
name: "Bob",
|
||||
avatar: "B",
|
||||
email: "bob@company.com",
|
||||
processRoles: [{ processId: 1, role: "User" }]
|
||||
},
|
||||
{
|
||||
id: "USR-003",
|
||||
name: "Charlie Davis",
|
||||
avatar: "CD",
|
||||
email: "charlie.d@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-002", "Peer"),
|
||||
createProcessRole("PROC-003", "Deposit"),
|
||||
createProcessRole("PROC-005", "User")
|
||||
]
|
||||
id: 3,
|
||||
name: "Charlie",
|
||||
avatar: "C",
|
||||
email: "charlie@company.com",
|
||||
processRoles: [{ processId: 1, role: "Process" }]
|
||||
},
|
||||
{
|
||||
id: "USR-004",
|
||||
name: "David Wilson",
|
||||
avatar: "DW",
|
||||
email: "david.w@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-001", "Artefact"),
|
||||
createProcessRole("PROC-004", "Resolve"),
|
||||
createProcessRole("PROC-006", "Process")
|
||||
]
|
||||
id: 4,
|
||||
name: "David",
|
||||
avatar: "D",
|
||||
email: "david@company.com",
|
||||
processRoles: [{ processId: 1, role: "Process" }]
|
||||
},
|
||||
{
|
||||
id: "USR-005",
|
||||
name: "Eve Brown",
|
||||
avatar: "EB",
|
||||
email: "eve.b@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-002", "Backup"),
|
||||
createProcessRole("PROC-003", "User"),
|
||||
createProcessRole("PROC-007", "Payment")
|
||||
]
|
||||
id: 15,
|
||||
name: "Oscar",
|
||||
avatar: "O",
|
||||
email: "oscar@company.com",
|
||||
processRoles: [{ processId: 1, role: "Backup" }]
|
||||
},
|
||||
{
|
||||
id: "USR-006",
|
||||
name: "Frank Miller",
|
||||
avatar: "FM",
|
||||
email: "frank.m@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-001", "Member"),
|
||||
createProcessRole("PROC-004", "Process"),
|
||||
createProcessRole("PROC-008", "Peer")
|
||||
]
|
||||
id: 16,
|
||||
name: "Patricia",
|
||||
avatar: "P",
|
||||
email: "patricia@company.com",
|
||||
processRoles: [{ processId: 1, role: "Backup" }]
|
||||
},
|
||||
|
||||
// Processus 2
|
||||
{
|
||||
id: 17,
|
||||
name: "Quinn",
|
||||
avatar: "Q",
|
||||
email: "quinn@company.com",
|
||||
processRoles: [{ processId: 2, role: "Artefact" }]
|
||||
},
|
||||
{
|
||||
id: "USR-007",
|
||||
name: "Grace Taylor",
|
||||
avatar: "GT",
|
||||
email: "grace.t@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-005", "Deposit"),
|
||||
createProcessRole("PROC-006", "Artefact"),
|
||||
createProcessRole("PROC-007", "Resolve")
|
||||
]
|
||||
id: 18,
|
||||
name: "Rachel",
|
||||
avatar: "R",
|
||||
email: "rachel@company.com",
|
||||
processRoles: [{ processId: 2, role: "Artefact" }]
|
||||
},
|
||||
{
|
||||
id: "USR-008",
|
||||
name: "Henry Clark",
|
||||
avatar: "HC",
|
||||
email: "henry.c@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-002", "User"),
|
||||
createProcessRole("PROC-005", "Backup"),
|
||||
createProcessRole("PROC-008", "Member")
|
||||
]
|
||||
id: 19,
|
||||
name: "Sam",
|
||||
avatar: "S",
|
||||
email: "sam@company.com",
|
||||
processRoles: [{ processId: 2, role: "Resolve" }]
|
||||
},
|
||||
{
|
||||
id: "USR-009",
|
||||
name: "Ivy Chen",
|
||||
avatar: "IC",
|
||||
email: "ivy.c@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-003", "Process"),
|
||||
createProcessRole("PROC-006", "Payment"),
|
||||
createProcessRole("PROC-009", "Peer")
|
||||
]
|
||||
id: 20,
|
||||
name: "Tom",
|
||||
avatar: "T",
|
||||
email: "tom@company.com",
|
||||
processRoles: [{ processId: 2, role: "Resolve" }]
|
||||
},
|
||||
|
||||
// Processus 3
|
||||
{
|
||||
id: 21,
|
||||
name: "Uma",
|
||||
avatar: "U",
|
||||
email: "uma@company.com",
|
||||
processRoles: [{ processId: 3, role: "Deposit" }]
|
||||
},
|
||||
{
|
||||
id: "USR-010",
|
||||
name: "Jack White",
|
||||
avatar: "JW",
|
||||
email: "jack.w@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-004", "Deposit"),
|
||||
createProcessRole("PROC-007", "Artefact"),
|
||||
createProcessRole("PROC-010", "Resolve")
|
||||
]
|
||||
id: 22,
|
||||
name: "Victor",
|
||||
avatar: "V",
|
||||
email: "victor@company.com",
|
||||
processRoles: [{ processId: 3, role: "Deposit" }]
|
||||
},
|
||||
{
|
||||
id: "USR-011",
|
||||
name: "Kelly Brown",
|
||||
avatar: "KB",
|
||||
email: "kelly.b@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-001", "Backup"),
|
||||
createProcessRole("PROC-008", "User"),
|
||||
createProcessRole("PROC-009", "Process")
|
||||
]
|
||||
id: 23,
|
||||
name: "Walter",
|
||||
avatar: "W",
|
||||
email: "walter@company.com",
|
||||
processRoles: [{ processId: 3, role: "Payment" }]
|
||||
},
|
||||
{
|
||||
id: "USR-012",
|
||||
name: "Liam Jones",
|
||||
avatar: "LJ",
|
||||
email: "liam.j@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-002", "Member"),
|
||||
createProcessRole("PROC-009", "Payment"),
|
||||
createProcessRole("PROC-010", "Deposit")
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "USR-013",
|
||||
name: "Mia Wilson",
|
||||
avatar: "MW",
|
||||
email: "mia.w@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-003", "Peer"),
|
||||
createProcessRole("PROC-005", "Artefact"),
|
||||
createProcessRole("PROC-010", "Backup")
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "USR-014",
|
||||
name: "Noah Martin",
|
||||
avatar: "NM",
|
||||
email: "noah.m@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-004", "Resolve"),
|
||||
createProcessRole("PROC-006", "User"),
|
||||
createProcessRole("PROC-008", "Process")
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "USR-015",
|
||||
name: "Olivia Moore",
|
||||
avatar: "OM",
|
||||
email: "olivia.m@company.com",
|
||||
processRoles: [
|
||||
createProcessRole("PROC-005", "Member"),
|
||||
createProcessRole("PROC-007", "Peer"),
|
||||
createProcessRole("PROC-009", "Deposit")
|
||||
]
|
||||
id: 24,
|
||||
name: "Xena",
|
||||
avatar: "X",
|
||||
email: "xena@company.com",
|
||||
processRoles: [{ processId: 3, role: "Payment" }]
|
||||
}
|
||||
];
|
||||
|
@ -82,12 +82,11 @@ function toggleUserList() {
|
||||
}
|
||||
|
||||
// Fonction pour changer d'utilisateur
|
||||
function switchUser(userId: string) {
|
||||
function switchUser(userId: string | number) {
|
||||
const user = membersMock.find(member => member.id === userId);
|
||||
if (!user) return;
|
||||
currentUser = user;
|
||||
updateCurrentUserDisplay();
|
||||
// Recharger la vue si nécessaire
|
||||
const userList = document.getElementById('userList');
|
||||
userList?.classList.remove('show');
|
||||
}
|
||||
@ -1420,7 +1419,7 @@ if (addMembersBtn) {
|
||||
const membersList = document.getElementById('members-list');
|
||||
if (membersList) {
|
||||
selectedMembers.forEach(memberId => {
|
||||
const member = allMembers.find(m => m.id === memberId);
|
||||
const member = allMembers.find(m => m.id === parseInt(memberId));
|
||||
if (member) {
|
||||
membersList.insertAdjacentHTML('beforeend', `<div>${member.name} (${member.roleName})</div>`);
|
||||
}
|
||||
@ -1676,6 +1675,9 @@ function signDocument(documentId: number, processId: number, isCommonDocument: b
|
||||
// Nouvelle fonction pour confirmer la signature
|
||||
function confirmSignature(documentId: number, processId: number, isCommonDocument: boolean) {
|
||||
try {
|
||||
// Ajout du console.log pour voir l'utilisateur actuel
|
||||
console.log('Current user:', currentUser);
|
||||
|
||||
const groups = JSON.parse(localStorage.getItem('groups') || JSON.stringify(groupsMock));
|
||||
const group = groups.find((g: Group) => g.id === processId);
|
||||
|
||||
@ -1683,28 +1685,28 @@ function confirmSignature(documentId: number, processId: number, isCommonDocumen
|
||||
throw new Error('Processus non trouvé');
|
||||
}
|
||||
|
||||
let document;
|
||||
let targetDoc;
|
||||
if (isCommonDocument) {
|
||||
document = group.commonDocuments.find((d: any) => d.id === documentId);
|
||||
targetDoc = group.commonDocuments.find((d: any) => d.id === documentId);
|
||||
} else {
|
||||
for (const role of group.roles) {
|
||||
if (role.documents) {
|
||||
document = role.documents.find((d: any) => d.id === documentId);
|
||||
if (document) break;
|
||||
targetDoc = role.documents.find((d: any) => d.id === documentId);
|
||||
if (targetDoc) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!document) {
|
||||
if (!targetDoc) {
|
||||
throw new Error('Document non trouvé');
|
||||
}
|
||||
|
||||
const userSignature = document.signatures.find((sig: DocumentSignature) =>
|
||||
const userSignature = targetDoc.signatures.find((sig: DocumentSignature) =>
|
||||
sig.member.name === currentUser.name
|
||||
);
|
||||
|
||||
if (!userSignature) {
|
||||
throw new Error('Signature non trouvée pour cet utilisateur');
|
||||
throw new Error(`L'utilisateur ${currentUser.name} n'est pas autorisé à signer ce document. Veuillez vous connecter avec un utilisateur autorisé.`);
|
||||
}
|
||||
|
||||
userSignature.signed = true;
|
||||
@ -1712,12 +1714,16 @@ function confirmSignature(documentId: number, processId: number, isCommonDocumen
|
||||
|
||||
localStorage.setItem('groups', JSON.stringify(groups));
|
||||
|
||||
closeModal(document.querySelector('.close-btn'));
|
||||
// Modification ici : utiliser document.querySelector au lieu de document
|
||||
const closeBtn = document.querySelector('.modal-overlay .close-btn');
|
||||
if (closeBtn instanceof HTMLElement) {
|
||||
closeModal(closeBtn);
|
||||
}
|
||||
|
||||
if (isCommonDocument) {
|
||||
showProcessDetails(group, processId);
|
||||
} else {
|
||||
const role = group.roles.find((r: any) => r.documents?.includes(document));
|
||||
const role = group.roles.find((r: any) => r.documents?.includes(targetDoc));
|
||||
if (role) {
|
||||
showRoleDocuments(role, group);
|
||||
}
|
||||
@ -1734,7 +1740,6 @@ function confirmSignature(documentId: number, processId: number, isCommonDocumen
|
||||
window.confirmSignature = confirmSignature;
|
||||
window.signDocument = signDocument;
|
||||
|
||||
// S'assurer que la fonction est disponible globalement
|
||||
if (typeof window !== 'undefined') {
|
||||
(window as any).signDocument = signDocument;
|
||||
(window as any).confirmSignature = confirmSignature;
|
||||
|
Loading…
x
Reference in New Issue
Block a user