[Story-1060] Gate settings UI on settings:write

Story 1060Epic None19 files · +369/−35

PR #249 · pramaan-io/pramaan-app · merged 2026-06-07

How it flows

sequenceDiagram
  autonumber
  participant be as Backend (pramaan-functions)
  participant gen as Generated types & zod
  participant lib as app-me helper
  participant ui as Settings pages
  be->>gen: sync openapi.json (permissions array added)
  gen->>lib: AppMeView now carries permissions: string[]
  lib->>lib: hasSettingsWritePermission(me) checks me.permissions
  lib->>ui: can write? — true / false
  ui->>ui: hide write affordances, page goes read-only

Kya NAHI hota

server ki permission list pe trust
403 tests pass, build aur lint clean
no hardcoded UI literals in touched files
UI read-only sirf ek courtesy — real check backend pe
permission string rename → types break loud, not silent
client-side bypass ke baad bhi server-truth jaari

Files changed (19)

File±
docs/walkthroughs/story-1060-forum-settings-readonly.png+0
docs/walkthroughs/story-1060-forum-settings-writable.png+0
docs/walkthroughs/story-1060-walkthrough.html+201
openapi/AGENTS.md+5 −4
openapi/app-api.json+8
src/app/[locale]/(workspace)/settings/AGENTS.md+7 −6
src/app/[locale]/(workspace)/settings/matter-configuration/filing-types/page.tsx+2 −2
src/app/[locale]/(workspace)/settings/matter-configuration/forums/page.tsx+2 −2
src/app/[locale]/(workspace)/settings/matter-configuration/matter-templates/[matterTemplateId]/page.tsx+2 −2
src/app/[locale]/(workspace)/settings/matter-configuration/matter-templates/page.tsx+2 −2
src/components/settings/forums/AGENTS.md ★+68
src/components/settings/forums/CLAUDE.md+1
src/gen/schemas/appMeView.json+6
src/gen/types/AppMeView.ts+5
src/gen/zod/appMeViewSchema.ts+5
src/lib/api/firms.ts ★+16 −8
src/lib/app-me.test.ts ★+17
src/lib/app-me.ts+15 −2
tests/unit/me-contract.test.ts+7 −7