103 lines
2.7 KiB
Dart
103 lines
2.7 KiB
Dart
import 'package:flutter/foundation.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];
|
|
}
|