Ajout des permissions
This commit is contained in:
102
em2rp/lib/models/role_model.dart
Normal file
102
em2rp/lib/models/role_model.dart
Normal file
@ -0,0 +1,102 @@
|
||||
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];
|
||||
}
|
Reference in New Issue
Block a user