Jeppe B
0060fb45ca
Add in-app account deletion ( #319 )
...
## Summary
- Add self-service deletion for the authenticated customer or subuser
identity only.
- Preserve shared customer grants, reset keys, bookings, order bookings,
vehicles, invoices, and legally required history.
- Require password/TOTP or a fresh deletion-specific, five-minute,
single-use WebAuthn assertion.
- Reject support impersonation and expired legacy plain-session tokens.
- Use durable database throttling, transactional request processing, a
durable outbox, and terminal `manual_review` state.
- Keep API and worker default-off behind separate
`account_deletion.api_enabled` and `account_deletion.worker_enabled`
module-config flags.
## Safe rollout
1. Keep both flags disabled.
2. Run `php scripts/account-deletion-schema.php check`.
3. If needed, run `php scripts/account-deletion-schema.php apply --yes`,
then rerun `check` until `ready:true`.
4. Deploy the frontend companion PR while the API remains disabled.
5. Enable `api_enabled` for a controlled canary; verify password and
passwordless request flows plus immediate authentication revocation.
6. Inspect queued request/outbox state, then enable `worker_enabled`.
7. Verify anonymization, preserved tenant/history data, outbox delivery,
retries, and manual-review behavior before broad rollout.
## Verification
- Account deletion unit tests: 2 passed, 43 assertions.
- PHP lint, both OpenAPI YAML parses, runtime-DDL scan,
destructive-scope scan, and `git diff --check` passed.
- Full API/unit/integration evidence is required from exact-head CI;
local Docker is unavailable and shared-vendor tests were explicitly
discarded.
## Security notes
- Schema mutation is CLI-only; web and cron paths perform read-only
readiness checks.
- Runtime behavior fails closed when schema/config/throttle/delivery
prerequisites are unavailable.
2026-07-22 19:22:17 +02:00
Jeppe B
abde54c898
Allow Capacitor iOS API origin ( #317 )
...
Allow the exact Capacitor iOS WebView origin through credentialed CORS while strictly validating request-origin syntax.
2026-07-20 13:53:55 +02:00
Jeppe B
2a6a86c9c3
Resolve backend Qodana critical and high findings ( #314 )
...
Resolve recommended-profile Critical and High findings, retain narrow analyzer exceptions, and update the edge-broker WebSocket dependency to a non-vulnerable release.
2026-07-17 05:44:16 +02:00
Jeppe B
9b2d5d5291
Fix customer restriction CI regressions
2026-07-16 12:06:42 +02:00
Jeppe B
e1fb79d9b6
Add customer rule product restrictions
2026-07-16 11:50:52 +02:00
Jeppe B
879dfcf79a
Improve invoice period data and POS add-on validation
2026-07-15 17:04:52 +02:00
Jeppe B
0feb705059
Support collected invoice economic PDF downloads
2026-07-14 15:39:39 +02:00
Jeppe Bundgaard
69b3bf83c4
Allow custom subuser grant permission writes
2026-07-13 22:30:18 +02:00
Jeppe Bundgaard
5bac316e4b
Add loading screen for session confirmation and enhance vehicle management labels
2026-07-13 22:11:54 +02:00
Jeppe Bundgaard
026492c3bd
Queue cron runs through workers
2026-07-13 20:03:39 +02:00
Jeppe Bundgaard
403f93e62c
Fix self-serve schema compatibility in CI
2026-07-13 15:36:03 +02:00
Jeppe Bundgaard
582edd3e6c
Implement subuser verification and invoice/self-serve API fixes
2026-07-13 15:11:49 +02:00
Jeppe Bundgaard
012e5366ba
Add system status displays for Minio and Redis, and enhance backup configuration
2026-07-13 10:08:00 +02:00
Jeppe Bundgaard
6a00f023b1
Refactor cron scheduling
2026-07-09 11:04:13 +02:00
Jeppe Bundgaard
fc6c76ad1b
Add customer rule cleanup for spotfree addon products with preview and apply functionality
2026-07-08 14:40:46 +02:00
Jeppe Bundgaard
6a694f92cc
Add bulk action preview and apply endpoints for collected invoices
2026-07-08 13:46:31 +02:00
Jeppe Bundgaard
6b7592921d
Add subuser permission templates service and related tests
2026-07-08 11:49:40 +02:00
Jeppe Bundgaard
dcef993f12
Implement department wash count service and refactor related reporting functions
2026-07-08 10:35:24 +02:00
Jeppe Bundgaard
23aca449f7
Add department wash count service for tracking wash counts and transaction summaries
2026-07-08 10:25:03 +02:00
Jeppe Bundgaard
10d1eb5bac
Refactor system search cache handling and update OpenAPI specifications for max results
2026-07-07 18:59:07 +02:00
Jeppe Bundgaard
084435e9b8
Add customer pricing permissions and update related tests
2026-07-07 17:58:39 +02:00
Jeppe Bundgaard
172a21c517
Implement department-specific customer pricing functionality
2026-07-07 17:27:56 +02:00
Jeppe Bundgaard
ce43c4e064
Expose limited backoffice role permission templates
2026-07-07 03:23:42 +02:00
copilot-swe-agent[bot]
57bcbaf72a
Fix 11 failing API tests across 4 files
2026-07-07 00:31:43 +00:00
copilot-swe-agent[bot]
53d0636193
Fix limited-backoffice permissions and add department access restrictions
2026-07-06 23:12:01 +00:00
Jeppe Bundgaard
6b4b55cb62
Add limited backoffice employee migration
2026-07-07 00:10:22 +02:00
Jeppe Bundgaard
0cca597fdc
Fix XLVask usage import dates
...
Fix XLVask usage-log import metadata and period-scoped Selvvask automation.
2026-07-06 23:49:28 +02:00
Jeppe Bundgaard
7ac5c5585b
Add limited backoffice employee QR login links
2026-07-06 17:32:58 +02:00
Jeppe B
8544ce0a18
Merge pull request #297 from copenhagentruckwash/codex/customer-product-fixed-price-overrides
...
Add customer product fixed price overrides
2026-07-06 17:23:06 +02:00
Jeppe Bundgaard
614715822f
Fix backend merge fallout for booking and limited employees
2026-07-06 17:16:22 +02:00
Jeppe Bundgaard
1da02e2486
Fix limited backoffice price save reset
2026-07-06 17:13:04 +02:00
Jeppe B
742b15116d
Merge pull request #295 from copenhagentruckwash/fix/economic-ean-transfer
...
Fix e-conomic EAN customer transfer
2026-07-06 17:00:57 +02:00
Jeppe Bundgaard
e0ae74bdc2
Merge remote-tracking branch 'origin/master' into codex/customer-product-fixed-price-overrides
2026-07-06 17:00:52 +02:00
Jeppe Bundgaard
08dc803b3e
Make limited backoffice employees regular employees
2026-07-06 16:59:32 +02:00
Jeppe Bundgaard
248a901f24
Merge master into fixed price override branch
2026-07-06 16:54:01 +02:00
Jeppe Bundgaard
d9eacf6f84
Deduplicate limited backoffice price products
2026-07-06 16:28:08 +02:00
Jeppe B
b8390ac0d3
Merge pull request #298 from copenhagentruckwash/codex/only-tankcleaning-order-enforcement
...
Enforce only tankcleaning order products
2026-07-06 16:01:40 +02:00
Jeppe Bundgaard
1cda2a81aa
Merge remote-tracking branch 'origin/master' into codex/custom-pricing-only-departments
...
# Conflicts:
# services/nginx/app/tests/Api/OrderItemsApiTest.php
2026-07-06 15:21:31 +02:00
Jeppe B and Jeppe Bundgaard
8e46ce1b04
[codex] Allow error reports without screenshots ( #299 )
...
* Allow error reports without screenshots
* Stabilize edge gateway shell transcript smoke
---------
Co-authored-by: Jeppe Bundgaard <jb@truckwash.dk >
2026-07-06 14:27:47 +02:00
Jeppe B and Jeppe Bundgaard
11c2a1b72e
Block restricted customer order items ( #296 )
...
Co-authored-by: Jeppe Bundgaard <jb@truckwash.dk >
2026-07-06 14:06:29 +02:00
Jeppe B and Jeppe Bundgaard
6f3d7e0f7d
Add limited backoffice employee contact fields ( #294 )
...
Co-authored-by: Jeppe Bundgaard <jb@truckwash.dk >
2026-07-06 13:14:06 +02:00
Jeppe Bundgaard
430c90cbca
Enforce only tankcleaning order products
2026-07-06 12:53:42 +02:00
Jeppe Bundgaard
f02dfd8c9c
Add customer product fixed price overrides
2026-07-06 12:52:33 +02:00
Jeppe B
a8fba73d99
Add limited backoffice role permission details ( #291 )
...
Adds grouped safe permission metadata for limited backoffice role presets.
2026-07-06 12:24:54 +02:00
Jeppe Bundgaard
db1b9a2c96
Fix e-conomic EAN customer transfer
2026-07-06 11:34:23 +02:00
Jeppe Bundgaard
38814545c4
Optimize collected e-conomic invoice transfers
2026-07-06 11:31:22 +02:00
Jeppe Bundgaard
9fa249cc11
Fix limited backoffice price saves on legacy schema
2026-07-06 10:53:18 +02:00
Jeppe Bundgaard
215c8d0fbb
Add limited backoffice role permission details
2026-07-06 10:38:51 +02:00
Jeppe Bundgaard
d47ea1d659
Add custom-only department pricing enforcement
2026-07-06 10:15:11 +02:00
Jeppe Bundgaard
18fede78f8
Fix limited backoffice schema compatibility
2026-07-06 09:15:55 +02:00