From 0a4cb375e954616746ce4c42b6b1bdd99f325f89 Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 9 Mar 2026 10:07:16 +0100 Subject: [PATCH] set up webhook for organization creation ( hard Coded ) --- .idea/Easy_solution.iml | 2 + .idea/php.xml | 4 ++ composer.json | 1 + config/reference.php | 4 +- src/Controller/OrganizationController.php | 8 +++- src/EventListener/LogoutSubscriber.php | 2 +- src/Webhook/OrganizationNotifier.php | 45 +++++++++++++++++++++++ 7 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 src/Webhook/OrganizationNotifier.php diff --git a/.idea/Easy_solution.iml b/.idea/Easy_solution.iml index 5c18800..1edceab 100644 --- a/.idea/Easy_solution.iml +++ b/.idea/Easy_solution.iml @@ -19,6 +19,8 @@ + + diff --git a/.idea/php.xml b/.idea/php.xml index 26549ad..3dac51b 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -181,6 +181,10 @@ + + + + diff --git a/composer.json b/composer.json index 8d433df..cd41d70 100644 --- a/composer.json +++ b/composer.json @@ -52,6 +52,7 @@ "symfony/ux-turbo": "^2.24", "symfony/validator": "7.4.*", "symfony/web-link": "7.4.*", + "symfony/webhook": "7.4.*", "symfony/yaml": "7.4.*", "twig/twig": "^2.12|^3.0" }, diff --git a/config/reference.php b/config/reference.php index 6cab768..41d3386 100644 --- a/config/reference.php +++ b/config/reference.php @@ -676,7 +676,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }>, * }, * webhook?: bool|array{ // Webhook configuration - * enabled?: bool|Param, // Default: false + * enabled?: bool|Param, // Default: true * message_bus?: scalar|Param|null, // The message bus to use. // Default: "messenger.default_bus" * routing?: array, * }, * remote-event?: bool|array{ // RemoteEvent configuration - * enabled?: bool|Param, // Default: false + * enabled?: bool|Param, // Default: true * }, * json_streamer?: bool|array{ // JSON streamer configuration * enabled?: bool|Param, // Default: false diff --git a/src/Controller/OrganizationController.php b/src/Controller/OrganizationController.php index bd09428..00e805f 100644 --- a/src/Controller/OrganizationController.php +++ b/src/Controller/OrganizationController.php @@ -9,8 +9,8 @@ use App\Form\OrganizationForm; use App\Repository\OrganizationsRepository; use App\Repository\UsersOrganizationsRepository; use App\Service\ActionService; -use App\Service\AwsService; use App\Service\LoggerService; +use App\Webhook\OrganizationNotifier; use App\Service\OrganizationsService; use App\Service\UserOrganizationService; use App\Service\UserService; @@ -37,7 +37,9 @@ class OrganizationController extends AbstractController private readonly ActionService $actionService, private readonly UserOrganizationService $userOrganizationService, private readonly OrganizationsRepository $organizationsRepository, - private readonly LoggerService $loggerService, private readonly UsersOrganizationsRepository $usersOrganizationsRepository) + private readonly LoggerService $loggerService, + private readonly UsersOrganizationsRepository $usersOrganizationsRepository, + private readonly OrganizationNotifier $organizationNotifier) { } @@ -111,6 +113,8 @@ class OrganizationController extends AbstractController $this->entityManager->persist($organization); $this->entityManager->flush(); + //webhook notify + $this->organizationNotifier->notifyOrganizationCreated($organization); // Loggers... $this->loggerService->logOrganizationInformation($organization->getId(), $actingUser->getUserIdentifier(), "Organization Created via ajax"); diff --git a/src/EventListener/LogoutSubscriber.php b/src/EventListener/LogoutSubscriber.php index c5b7051..da6a644 100644 --- a/src/EventListener/LogoutSubscriber.php +++ b/src/EventListener/LogoutSubscriber.php @@ -43,7 +43,7 @@ class LogoutSubscriber implements EventSubscriberInterface $params['redirect_app'] = $redirectApp; } - $easycheckLogoutUrl = $this->easycheckUrl . '/logout?' . http_build_query($params); + $easycheckLogoutUrl = rtrim($this->easycheckUrl, '/'). '/logout?' . http_build_query($params); $this->logger->info('Redirecting to EasyCheck logout', [ 'url' => $easycheckLogoutUrl, diff --git a/src/Webhook/OrganizationNotifier.php b/src/Webhook/OrganizationNotifier.php new file mode 100644 index 0000000..d8b5ec3 --- /dev/null +++ b/src/Webhook/OrganizationNotifier.php @@ -0,0 +1,45 @@ +easycheckUrl, '/'). '/webhook/organization_created', + secret: $this->webhookSecret, + ); + + $event = new RemoteEvent( + name: 'organization_created', + id: uniqid('', true), + payload: [ + 'orgId' => $organizations->getId(), + 'orgName' => $organizations->getName(), + 'orgEmail' => $organizations->getEmail(), + 'orgNumber' => $organizations->getNumber(), + 'orgAddress' => $organizations->getAddress(), + 'orgLogo' => $organizations->getLogoUrl(), + 'created_at' => time(), + ] + ); + + $this->messageBus->dispatch( + new SendWebhookMessage($subscriber, $event) + ); + } +} \ No newline at end of file