3.6 KiB
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 -lfor 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.phpfailed because local MySQL refused the connection:SQLSTATE[HY000] [2002].vendor\bin\phpunitwas not available:Could not open input file.sonar-scannerwas not available in PATH.- Manual real SMSPLANET send remains pending until the migration is applied and valid SMSPLANET credentials are tested.
Deviations
api_keyis stored asapi_key_encryptedrather than plaintext. This is stricter than the draft task and consistent with the requirement that credentials are secrets.IntegrationSecretCipherhad 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.scssafter 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.mdDOCS/ARCHITECTURE.mdDOCS/DB_SCHEMA.mdDOCS/TECH_CHANGELOG.mddatabase/migrations/20260512_000108_create_smsplanet_integration_settings.sqlresources/lang/pl.phpresources/scss/app.scssresources/views/settings/smsplanet.phproutes/web.phpsrc/Modules/Settings/IntegrationSecretCipher.phpsrc/Modules/Settings/IntegrationsHubController.phpsrc/Modules/Settings/SmsplanetApiClient.phpsrc/Modules/Settings/SmsplanetIntegrationController.phpsrc/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-scanneris available.