Files
EM2_ERP/em2rp/lib/models/role_model.dart
PC-PAUL\paulf b8e4f39e4c Ajout d'utilisateur OK
Ajout bouton de deconnexion
2025-05-13 19:39:29 +02:00

101 lines
2.7 KiB
Dart

enum Permission {
// Permissions liées aux prestations
viewAllEvents, // Voir toutes les prestations
viewAssignedEvents, // Voir uniquement les prestations assignées
editEvents, // Modifier les prestations
deleteEvents, // Supprimer les prestations
assignCrew, // Assigner des membres d'équipe aux prestations
// Permissions liées aux finances
viewPrices, // Voir les prix
editPrices, // Modifier les prix
viewQuotes, // Voir les devis
createQuotes, // Créer des devis
editQuotes, // Modifier les devis
viewInvoices, // Voir les factures
createInvoices, // Créer des factures
editInvoices, // Modifier les factures
// Permissions liées aux utilisateurs
viewUsers, // Voir les utilisateurs
editUsers, // Modifier les utilisateurs
deleteUsers, // Supprimer les utilisateurs
// Permissions liées aux clients
viewClients, // Voir les clients
editClients, // Modifier les clients
deleteClients, // Supprimer les clients
}
class Role {
final String name;
final Set<Permission> permissions;
const Role({
required this.name,
required this.permissions,
});
bool hasPermission(Permission permission) => permissions.contains(permission);
bool hasAllPermissions(List<Permission> requiredPermissions) {
return requiredPermissions
.every((permission) => permissions.contains(permission));
}
bool hasAnyPermission(List<Permission> requiredPermissions) {
return requiredPermissions
.any((permission) => permissions.contains(permission));
}
}
class Roles {
static const admin = Role(
name: 'ADMIN',
permissions: {
// Toutes les permissions pour l'administrateur
Permission.viewAllEvents,
Permission.viewAssignedEvents,
Permission.editEvents,
Permission.deleteEvents,
Permission.assignCrew,
Permission.viewPrices,
Permission.editPrices,
Permission.viewQuotes,
Permission.createQuotes,
Permission.editQuotes,
Permission.viewInvoices,
Permission.createInvoices,
Permission.editInvoices,
Permission.viewUsers,
Permission.editUsers,
Permission.deleteUsers,
Permission.viewClients,
Permission.editClients,
Permission.deleteClients,
},
);
static const crew = Role(
name: 'CREW',
permissions: {
// Permissions limitées pour l'équipe
Permission.viewAssignedEvents,
Permission.viewClients,
},
);
static Role fromString(String roleName) {
switch (roleName.toUpperCase()) {
case 'ADMIN':
return admin;
case 'CREW':
return crew;
default:
return crew; // Par défaut, on donne les permissions minimales
}
}
static List<Role> values = [admin, crew];
}