feat: Semaine 9

This commit is contained in:
gauvainboiche
2026-05-15 16:24:56 +02:00
parent 3315cb2336
commit ce1f0e513a
108 changed files with 3150 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
from dataclasses import dataclass, field
from typing import Callable
@dataclass
class User:
username: str
is_authenticated: bool = False
roles: list[str] = field(default_factory=lambda: ["user"])
def required_roles(roles: list[str]):
def wrapper(fonction: Callable):
def internal_wrapper(user: User):
if not any(role in user.roles for role in roles): # True => [False, False, True]
raise PermissionError(f"L'utilisateur {user.username} n'a pas le rôle requis.")
return fonction(user)
return internal_wrapper
return wrapper
@required_roles(["admin", "modo"])
def operation_sensible(user: User):
return f"Opération sensible faite par {user.username}"
alice = User("alice@courriel.fr", True, ["modo"])
bob = User("bob@courriel.fr", True)
print(operation_sensible(alice))