fix(ui): mobile + dashboard polish + dev CSRF relaxation
- filter-bar: hide select / multi-select fields when the options list is
empty (was rendering bare "Tags" / "Status" labels above empty inputs)
- berth-detail-header: show "Berth A1" title on mobile (was hidden via
`hidden sm:block`)
- dashboard-shell: time-aware greeting (Good morning/afternoon/evening,
firstName) using the existing ['me'] cache; falls back to
"Welcome back" when firstName isn't set yet
- mobile-topbar: hide UUID-segment fallback title flash on detail-page
navigation — when the URL last segment is a UUID, walk up to the
parent collection name ("Clients", "Yachts") until the page sets the
real entity title via useMobileChrome
- mobile-bottom-tabs: subtle bg-primary/10 pill behind icon on active
tab for a clear "you are here" cue
- branded-auth-shell: lock to viewport via fixed/inset-0 so the iOS
Safari rubber-band bounce doesn't scroll the centered login card
- middleware: skip CSRF origin check in development. LAN testing
(real iPhone on 192.168.x.x hitting the Mac dev server while a Mac
browser tab is on localhost) trips the cross-origin defense; prod
keeps it as-is.
- package.json dev script: -H 0.0.0.0 so the dev server is reachable
from devices on the LAN
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -72,8 +72,12 @@ export function middleware(request: NextRequest): NextResponse {
|
||||
const { pathname } = request.nextUrl;
|
||||
|
||||
// CSRF defense-in-depth: state-changing requests to authed /api/v1
|
||||
// endpoints must come from the app's own origin.
|
||||
// endpoints must come from the app's own origin. Skipped in dev so
|
||||
// LAN testing (e.g. real iPhone hitting the Mac via 192.168.x.x while
|
||||
// a Mac browser tab is loaded from localhost) doesn't trip on the
|
||||
// origin mismatch. Production keeps the check.
|
||||
if (
|
||||
process.env.NODE_ENV !== 'development' &&
|
||||
STATE_CHANGING_METHODS.has(request.method) &&
|
||||
isOriginCheckedPath(pathname) &&
|
||||
!originAllowed(request)
|
||||
|
||||
Reference in New Issue
Block a user