Backend (main.py + auth.py): - Validate Bearer JWT against the intense-sale realm JWKS (RS256, issuer checked, aud skipped). Missing/invalid token = anonymous, never an error, so the public map keeps working when Keycloak is down. - Anonymous truncation: /api/meta hides brand/manager/status facets; /api/bookings blanks brand/company_name/manager/task_id/task_status (bars stay, one neutral colour); /api/map keeps occupied_now but empties booking details. Hidden facet filters are ignored for anonymous callers. - boards stay visible to all (physical inventory: address/city/dimension). Frontend (keycloak-js): - Silent SSO (check-sso) — anonymous by default, Войти/Выйти button. - Bearer token attached + refreshed on every API call. - Anonymous UI hides Brand/Manager/Status filters, Brand/Company toggles, appearance menu, collisions and labels; board detail panel (Planfix deep-links) gated to managers. Test manager: user / 1234567890 (realm role `manager`).
23 lines
468 B
JSON
23 lines
468 B
JSON
{
|
|
"name": "mapdash-frontend",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"typecheck": "tsc --noEmit",
|
|
"build": "tsc --noEmit && vite build"
|
|
},
|
|
"dependencies": {
|
|
"@fontsource/ibm-plex-sans": "^5.3.0",
|
|
"keycloak-js": "^26.2.4",
|
|
"open-props": "^1.7.23",
|
|
"vis-data": "^7.1.9",
|
|
"vis-timeline": "^7.7.3"
|
|
},
|
|
"devDependencies": {
|
|
"typescript": "^5.6.3",
|
|
"vite": "^5.4.10"
|
|
}
|
|
}
|