Modifications des permissions, ajout Presta OK, vue calendrier ok
This commit is contained in:
@ -1,100 +1,28 @@
|
||||
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
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
|
||||
// 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 {
|
||||
class RoleModel {
|
||||
final String id;
|
||||
final String name;
|
||||
final Set<Permission> permissions;
|
||||
final List<String> permissions;
|
||||
|
||||
const Role({
|
||||
RoleModel({
|
||||
required this.id,
|
||||
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));
|
||||
factory RoleModel.fromMap(Map<String, dynamic> map, String id) {
|
||||
return RoleModel(
|
||||
id: id,
|
||||
name: map['name'] ?? '',
|
||||
permissions: List<String>.from(map['permissions'] ?? []),
|
||||
);
|
||||
}
|
||||
|
||||
bool hasAnyPermission(List<Permission> requiredPermissions) {
|
||||
return requiredPermissions
|
||||
.any((permission) => permissions.contains(permission));
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'name': name,
|
||||
'permissions': permissions,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
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