Modifications des permissions, ajout Presta OK, vue calendrier ok

This commit is contained in:
2025-05-24 23:50:07 +02:00
parent 249a6d6074
commit 851b891a8a
18 changed files with 1077 additions and 304 deletions

View File

@ -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];
}