Files
orderPRO/.paul/phases/117-smsplanet-integration/117-01-SUMMARY.md

3.6 KiB

phase, plan, completed, status
phase plan completed status
117-smsplanet-integration 01 2026-05-12 complete-with-environment-gaps

Summary: SMSPLANET Integration Settings + Test SMS

Result

Implemented the first SMSPLANET integration slice: one global configuration screen, encrypted credentials, support for Bearer token and key + password authorization, hub visibility, and a real test SMS flow using POST https://api2.smsplanet.pl/sms.

The implementation also fixes the integration settings checkbox/radio layout reported during UAT by moving the options into the existing compact SCSS component.

Acceptance Criteria

AC Status Notes
AC-1 Configuration save PASS SmsplanetIntegrationRepository stores one global row, encrypts token/key/password, and never returns secrets to the view.
AC-2 Two auth methods PASS Bearer token sends Authorization: Bearer ...; key + password sends credentials in form payload. First save requires complete credentials for the selected method.
AC-3 Validation PASS Save/test validate CSRF, sender, selected auth method, phone number and message length before API calls.
AC-4 Real test SMS IMPLEMENTED, MANUAL PENDING API client performs real send and does not set test=1. Manual live send is pending because local DB/migration verification was blocked.
AC-5 Hub visibility PASS IntegrationsHubController includes SMSPLANET with configuration, secret, active and last-test status.
AC-6 Docs/compliance PASS WITH TOOLING GAPS DOCS and .paul/codebase updated. PHP lint/build passed. Migration, PHPUnit and Sonar were blocked by local tooling/environment.

Verification

Passed:

  • C:\xampp\php\php.exe -l for all new/modified PHP files in this phase.
  • npm run build --if-present.
  • git diff --check.

Blocked or unavailable:

  • C:\xampp\php\php.exe bin\migrate.php failed because local MySQL refused the connection: SQLSTATE[HY000] [2002].
  • vendor\bin\phpunit was not available: Could not open input file.
  • sonar-scanner was not available in PATH.
  • Manual real SMSPLANET send remains pending until the migration is applied and valid SMSPLANET credentials are tested.

Deviations

  • api_key is stored as api_key_encrypted rather than plaintext. This is stricter than the draft task and consistent with the requirement that credentials are secrets.
  • IntegrationSecretCipher had an invalid namespace import and was fixed because SMSPLANET and existing integrations depend on it at runtime.
  • Checkbox/radio UI was adjusted in resources/scss/app.scss after the UAT screenshot showed inconsistent native control sizing/alignment.

Files Changed

  • .paul/codebase/architecture.md
  • .paul/codebase/db_schema.md
  • .paul/codebase/tech_changelog.md
  • .paul/phases/117-smsplanet-integration/117-01-PLAN.md
  • .paul/phases/117-smsplanet-integration/117-01-SUMMARY.md
  • DOCS/ARCHITECTURE.md
  • DOCS/DB_SCHEMA.md
  • DOCS/TECH_CHANGELOG.md
  • database/migrations/20260512_000108_create_smsplanet_integration_settings.sql
  • resources/lang/pl.php
  • resources/scss/app.scss
  • resources/views/settings/smsplanet.php
  • routes/web.php
  • src/Modules/Settings/IntegrationSecretCipher.php
  • src/Modules/Settings/IntegrationsHubController.php
  • src/Modules/Settings/SmsplanetApiClient.php
  • src/Modules/Settings/SmsplanetIntegrationController.php
  • src/Modules/Settings/SmsplanetIntegrationRepository.php

Follow-Up

  • Start local MySQL/XAMPP and run C:\xampp\php\php.exe bin\migrate.php.
  • Save real SMSPLANET credentials and run both manual test paths: Bearer token and key + password.
  • Run Sonar once sonar-scanner is available.