From 6ca91cbd3b3f8d7f74962f1f56ee08979d0e2a5f Mon Sep 17 00:00:00 2001 From: Matthieu Date: Fri, 19 Jun 2026 15:53:38 +0200 Subject: [PATCH] feat(core) : add CoreModule, user repository contract, notifier contract and enriched user contract --- src/Module/Core/CoreModule.php | 39 +++++++++++++++++++ .../Repository/UserRepositoryInterface.php | 23 +++++++++++ .../Domain/Contract/NotifierInterface.php | 10 +++++ src/Shared/Domain/Contract/UserInterface.php | 19 +++++++++ tests/Unit/Module/Core/CoreModuleTest.php | 35 +++++++++++++++++ .../TimestampableBlamableSubscriberTest.php | 36 +++++++++++++++++ 6 files changed, 162 insertions(+) create mode 100644 src/Module/Core/CoreModule.php create mode 100644 src/Module/Core/Domain/Repository/UserRepositoryInterface.php create mode 100644 src/Shared/Domain/Contract/NotifierInterface.php create mode 100644 tests/Unit/Module/Core/CoreModuleTest.php diff --git a/src/Module/Core/CoreModule.php b/src/Module/Core/CoreModule.php new file mode 100644 index 0000000..fde5724 --- /dev/null +++ b/src/Module/Core/CoreModule.php @@ -0,0 +1,39 @@ + + */ + public static function permissions(): array + { + return [ + ['code' => 'core.user.read', 'label' => 'Consulter les utilisateurs'], + ['code' => 'core.user.manage', 'label' => 'Gérer les utilisateurs'], + ['code' => 'core.notification.read', 'label' => 'Consulter ses notifications'], + ]; + } +} diff --git a/src/Module/Core/Domain/Repository/UserRepositoryInterface.php b/src/Module/Core/Domain/Repository/UserRepositoryInterface.php new file mode 100644 index 0000000..6f45735 --- /dev/null +++ b/src/Module/Core/Domain/Repository/UserRepositoryInterface.php @@ -0,0 +1,23 @@ + + */ + public function findByRole(string $role): array; + + /** + * @return list + */ + public function findActiveEmployees(DateTimeInterface $date): array; + + public function findOneByUsername(string $username): ?UserInterface; +} diff --git a/src/Shared/Domain/Contract/NotifierInterface.php b/src/Shared/Domain/Contract/NotifierInterface.php new file mode 100644 index 0000000..59872b2 --- /dev/null +++ b/src/Shared/Domain/Contract/NotifierInterface.php @@ -0,0 +1,10 @@ + */ + public function getRoles(): array; + + public function getFirstName(): ?string; + + public function getLastName(): ?string; + + public function getAvatarUrl(): ?string; + + public function getIsEmployee(): bool; } diff --git a/tests/Unit/Module/Core/CoreModuleTest.php b/tests/Unit/Module/Core/CoreModuleTest.php new file mode 100644 index 0000000..e6a9f11 --- /dev/null +++ b/tests/Unit/Module/Core/CoreModuleTest.php @@ -0,0 +1,35 @@ +id; } + + public function getUserIdentifier(): string + { + return 'user-'.$this->id; + } + + public function getUsername(): ?string + { + return 'user-'.$this->id; + } + + /** @return list */ + public function getRoles(): array + { + return ['ROLE_USER']; + } + + public function getFirstName(): ?string + { + return null; + } + + public function getLastName(): ?string + { + return null; + } + + public function getAvatarUrl(): ?string + { + return null; + } + + public function getIsEmployee(): bool + { + return false; + } }; }