diff --git a/api/application/contracts/user/roles.py b/api/application/contracts/user/roles.py deleted file mode 100644 index a36af64..0000000 --- a/api/application/contracts/user/roles.py +++ /dev/null @@ -1,15 +0,0 @@ -from enum import Enum - - -class UserRole(Enum): - # base roles - ADMIN = "Administrator" - - # service provider roles - SUPPLIER_EMPLOYER = "Director" - SUPPLIER = "Supplie of service" - SUPPLIER_EMPLOYEE = "Supplie employee" - - CLIENT = "Client" - EMPLOYER = "Client company employer" - EMPLOYEE = "Client company employee" diff --git a/api/domain/user/model.py b/api/domain/user/model.py index d71d187..e2f4916 100644 --- a/api/domain/user/model.py +++ b/api/domain/user/model.py @@ -1,5 +1,6 @@ import re from dataclasses import dataclass +from enum import Enum from uuid import UUID, uuid4 from api.domain import DomainValidationError @@ -7,6 +8,20 @@ from api.domain.entity import DomainEntity from api.domain.value_obj import DomainValueObject +class Roles(Enum): + # base roles + ADMIN = "Administrator" + + # service provider roles + SUPPLIER_EMPLOYER = "Director" + SUPPLIER = "Supplie of service" + SUPPLIER_EMPLOYEE = "Supplie employee" + + CLIENT = "Client" + EMPLOYER = "Client company employer" + EMPLOYEE = "Client company employee" + + @dataclass(frozen=True) class UserEmail(DomainValueObject): value: str @@ -15,7 +30,9 @@ class UserEmail(DomainValueObject): pattern = r"^[\w\.-]+@[a-zA-Z\d\.-]+\.[a-zA-Z]{2,}$" if not re.match(pattern, self.value): - raise DomainValidationError("Invalid email format. Email must be in the format 'example@example.com'.") + raise DomainValidationError( + "Invalid email format. Email must be in the format 'example@example.com'." + ) @dataclass(frozen=True) @@ -26,7 +43,9 @@ class UserFirstName(DomainValueObject): if len(self.value) < 1: raise DomainValidationError("First name must be at least 1 character long.") if len(self.value) > 100: - raise DomainValidationError("First name must be at most 100 characters long.") + raise DomainValidationError( + "First name must be at most 100 characters long." + ) if not self.value.isalpha(): raise DomainValidationError("First name must only contain letters.") @@ -39,7 +58,9 @@ class UserLastName(DomainValueObject): if len(self.value) < 1: raise DomainValidationError("Last name must be at least 1 character long.") if len(self.value) > 100: - raise DomainValidationError("Last name must be at most 100 characters long.") + raise DomainValidationError( + "Last name must be at most 100 characters long." + ) if not self.value.isalpha(): raise DomainValidationError("Last name must only contain letters.") @@ -49,6 +70,11 @@ class UserId(DomainValueObject): value: UUID +@dataclass(frozen=True) +class UserRole(DomainValueObject): + roles: list[Roles] + + @dataclass class User(DomainEntity[UserId]): name: UserFirstName