fix: enforce settings authority boundaries (#618)

Close generic settings authorization bypasses and enforce per-setting authority, validation, redaction, transactional config import, and route-local write rate limiting.
This commit is contained in:
SnapOtter
2026-07-22 20:15:38 +08:00
committed by GitHub
parent 0467e87bfe
commit 44d8109486
63 changed files with 2287 additions and 731 deletions
@@ -145,7 +145,7 @@ describe("permission enforcement on routes", () => {
method: "PUT",
url: "/api/v1/settings",
headers: { authorization: `Bearer ${userToken}` },
payload: { appTitle: "Hacked" },
payload: { defaultTheme: "dark" },
});
expect(res.statusCode).toBe(403);
});
@@ -220,7 +220,7 @@ describe("permission enforcement on routes", () => {
method: "PUT",
url: "/api/v1/settings",
headers: { authorization: `Bearer ${adminToken}` },
payload: { appTitle: "Test Title" },
payload: { defaultTheme: "dark" },
});
expect(res.statusCode).toBe(200);
});
@@ -239,7 +239,7 @@ describe("permission enforcement on routes", () => {
const res = await testApp.app.inject({
method: "PUT",
url: "/api/v1/settings",
payload: { appTitle: "Hacked" },
payload: { defaultTheme: "dark" },
});
expect(res.statusCode).toBe(401);
});