mirror of
https://github.com/bulwarkmail/webmail.git
synced 2026-11-01 16:12:02 +00:00
The admin pages save the whole policy from the draft they loaded. A save from a page opened before another tab's or another admin's save, or before a deleted plugin was dropped from the policy, used to put the older policy back. GET /api/admin/policy now sends the policy version as an ETag; the policy, organisation, plugins and themes pages send it back as If-Match, and a save based on an older version answers 409 and keeps the draft on the page. A PUT without If-Match replaces the policy as before. Deleting a plugin or theme changes only its id in the stored policy, and a policy import compares against what it replaces. Test mocks of the config manager gain getPolicyVersion and updatePolicy, which the route and the extension cleanup now call.