Area: Account & identity (audit phase 1) · Surface: /members (MemberDirectoryController@index) · Dimension: law-1-kickass · Severity: major
Every option in the role filter dropdown carries a stray `"` attribute, an unknown role shows a literal quote as its badge text, and the search/location inputs display a literal `"` when no query is set. This is visible on the live member directory and looks broken to users. The intended fallback was an empty string `''`, not a one-character double-quote string `'"'`.
Evidence
platform/templates/members/index.php uses a literal double-quote as the ?? fallback in five places:
L16: value="<?= $e($searchQuery ?? '"') ?>"
L20: <option value="<?= $val ?>" <?= ($roleFilter ?? '"') == $val ? 'selected' : '"' ?>>
L23: value="<?= $e($locationFilter ?? '"') ?>"
L44: $location = array_filter([$m['city'] ?? '"', $m['country'] ?? '"']);
L56: <?= $e($roleNames[(int) $m['role']] ?? '"') ?>
File matches HEAD (git status clean). Rendering it in PHP confirms the breakage: the role select emits `<option value="2" ">Registered</option>` for EVERY non-selected option (a stray quote attribute), an unknown role badge renders `<span class="badge">"</span>` (a literal " as the badge label), and an empty search/location field renders value=""" (a literal quote pre-filled in the box).
Suggested fix. Replace every `?? '"'` with `?? ''` on lines 16, 20 (both occurrences — the selected ternary's else branch should be `''`), 23, 44, and 56 of platform/templates/members/index.php.
Filed by the automated tenant-app audit (phase 1) and adversarially evidence-verified. Status: verified. Open — not yet actioned.
Patrick Bass
@mobieus