Skip to content

Commit 40bb0b3

Browse files
fix: prevent PII disclosure in appointment reschedule flow
Whitelist customer data fields before inlining into HTML to prevent unauthorized access to sensitive information (email, phone, address, etc). - Filter customer record to id, first_name, last_name only - Matches existing pattern used for provider data filtering - Fixes information disclosure vulnerability via appointment hash Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 39eff0b commit 40bb0b3

2 files changed

Lines changed: 2 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ developers to maintain and readjust their custom modifications on the main proje
77

88
### Fixed
99

10-
- Fixed insufficient client-side validation on the installation page (`assets/js/pages/installation.js`); the form now validates all fields before submitting and matches the server-side rules in `application/controllers/Installation.php`: required fields (including the language `<select>`), max length per `maxlength` attribute, no HTML tags in name/company-name fields, username pattern (`3-50` chars, `[a-zA-Z0-9_@.\-]`), minimum password length raised from 7 to 8, password confirmation, valid admin and company emails, and a valid http(s) company link URL
10+
- Fixed PII disclosure vulnerability in appointment reschedule flow (`application/controllers/Booking.php`): customer data was being inlined into the HTML response without field whitelisting, exposing email, phone, address, timezone, custom fields, and other sensitive information to any user in possession of the appointment hash. Customer record is now filtered to only expose necessary fields (id, first_name, last_name) before being embedded in the page
1111
- Fixed the page header showing a hardcoded blue border on Bootswatch themes that style `.navbar.bg-primary` with a fixed `border-color` (e.g. Cosmo/Lumen) when a custom company color is configured; the company color override now also forces `border-color: var(--bs-primary)` on `#header`, `#book-appointment-wizard #header` and `#frame-footer .backend-link`
1212
- Fixed the dynamic company color style overriding direct CSS properties on Bootstrap components (buttons, forms, navs, dropdowns, alerts, list groups) which was breaking the look of the active theme (including Bootswatch themes); the company color override is now restricted to setting Bootstrap CSS variables (`--bs-btn-bg`, `--bs-nav-link-color`, `--bs-pagination-active-bg`, etc.) so themes keep full control of the actual styles. App-specific selectors (header, booking wizard, filter records, existing customers list) are kept as-is. The previous direct Bootstrap component rules are commented out for now to allow testing before final removal
1313
- Replaced the visible "Booking Link" text next to the link icon on the providers and services backend pages with a Bootstrap tooltip shown on hover, so the icon-only link looks cleaner while still surfacing the label

application/controllers/Booking.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@ public function index(): void
280280
return;
281281
}
282282
$customer = $this->customers_model->find($appointment['id_users_customer']);
283+
$this->customers_model->only($customer, $this->allowed_customer_fields);
283284
$customer_token = md5(uniqid(mt_rand(), true));
284285

285286
// Cache the token for 10 minutes.

0 commit comments

Comments
 (0)