feat(116): hostedsms integration settings

Phase 116 complete:
- add HostedSMS settings with encrypted password storage
- add SimpleAPI real test SMS flow and integrations hub row
- document schema, architecture, changelog, and PAUL state

Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
2026-05-12 12:25:07 +02:00
parent adacb65110
commit bc2ed2c8e2
20 changed files with 1282 additions and 56 deletions

View File

@@ -32,6 +32,9 @@ use App\Modules\Settings\CarrierDeliveryMethodMappingRepository;
use App\Modules\Settings\FakturowniaApiClient;
use App\Modules\Settings\FakturowniaIntegrationController;
use App\Modules\Settings\FakturowniaIntegrationRepository;
use App\Modules\Settings\HostedSmsApiClient;
use App\Modules\Settings\HostedSmsIntegrationController;
use App\Modules\Settings\HostedSmsIntegrationRepository;
use App\Modules\Settings\InpostIntegrationController;
use App\Modules\Settings\InpostIntegrationRepository;
use App\Modules\Settings\IntegrationsHubController;
@@ -190,6 +193,18 @@ return static function (Application $app): void {
$fakturowniaApiClient,
new IntegrationsRepository($app->db())
);
$hostedSmsIntegrationRepository = new HostedSmsIntegrationRepository(
$app->db(),
(string) $app->config('app.integrations.secret', '')
);
$hostedSmsIntegrationController = new HostedSmsIntegrationController(
$template,
$translator,
$auth,
$hostedSmsIntegrationRepository,
new HostedSmsApiClient(),
new IntegrationsRepository($app->db())
);
$integrationsHubController = new IntegrationsHubController(
$template,
$translator,
@@ -199,7 +214,8 @@ return static function (Application $app): void {
$apaczkaIntegrationRepository,
$inpostIntegrationRepository,
$shopproIntegrationsRepository,
$fakturowniaIntegrationRepository
$fakturowniaIntegrationRepository,
$hostedSmsIntegrationRepository
);
$cronSettingsController = new CronSettingsController(
$template,
@@ -543,6 +559,9 @@ return static function (Application $app): void {
$router->post('/settings/integrations/fakturownia/save', [$fakturowniaIntegrationController, 'save'], [$authMiddleware]);
$router->post('/settings/integrations/fakturownia/test', [$fakturowniaIntegrationController, 'test'], [$authMiddleware]);
$router->post('/settings/integrations/fakturownia/delete', [$fakturowniaIntegrationController, 'delete'], [$authMiddleware]);
$router->get('/settings/integrations/hostedsms', [$hostedSmsIntegrationController, 'index'], [$authMiddleware]);
$router->post('/settings/integrations/hostedsms/save', [$hostedSmsIntegrationController, 'save'], [$authMiddleware]);
$router->post('/settings/integrations/hostedsms/test', [$hostedSmsIntegrationController, 'test'], [$authMiddleware]);
$router->get('/settings/integrations/shoppro', [$shopproIntegrationsController, 'index'], [$authMiddleware]);
$router->post('/settings/integrations/shoppro/save', [$shopproIntegrationsController, 'save'], [$authMiddleware]);
$router->post('/settings/integrations/shoppro/test', [$shopproIntegrationsController, 'test'], [$authMiddleware]);