fix(cabana): safe account action URLs, per-section isolation and the prompted record action contract (B-WR-03, B-WR-05, B-WR-06)

- an account action URL is kept only when it is http(s) with a host or a
  same-origin path; anything else is dropped and logged without the URL
- a failing Status marks its section error: true and a failing Applies
  drops only that action, instead of a 500 for the whole list
- status text goes through localizeDetail (B-IN-03); the non-string
  payload refusal is the phrase key action_prompt_invalid (B-IN-02)
- the record action annotations and pact's prompt doc say what happens
  (B-IN-05 text); admin.json and schema.d.ts regenerated
This commit is contained in:
Jakub Zych
2026-10-23 16:24:34 +02:00
parent 24cf6cd931
commit 44835e4c6b
12 changed files with 80 additions and 29 deletions

View File

@@ -109,6 +109,7 @@ form:
action_stale: This action no longer applies to this record. The page has been refreshed.
action_prompt_required: Enter a value to run this action.
action_prompt_too_long: "The value may not be longer than :max characters."
action_prompt_invalid: The answer must be text.
forbidden: You do not have permission to make this change. Nothing was saved.
dependent_invalid: Choose one of the listed options.
trigger_disabled_on: "Not editable while “:field” is on."

View File

@@ -119,6 +119,7 @@ form:
action_stale: Ta akcja nie dotyczy już tego rekordu. Strona została odświeżona.
action_prompt_required: Wpisz wartość, aby uruchomić tę akcję.
action_prompt_too_long: "Wartość nie może być dłuższa niż :max znaków."
action_prompt_invalid: Odpowiedź musi być tekstem.
forbidden: Nie masz uprawnień do wprowadzenia tej zmiany. Nic nie zostało zapisane.
dependent_invalid: Wybierz jedną z dostępnych opcji.
trigger_disabled_on: "Nie można edytować, gdy „:field” jest włączone."