TenantAtlas/apps/platform/.pnpm-store/v10/files/ba/6b0f9e8199c4b9c6a659108fcdad65c27de580c4674e31f9c12c86db23c6d8c638e1754342a904fa8d6e843a2ced8c24c59b39b609a2cf125c8dfc59ce2e00
ahmido 1fec9c6f9d
Some checks failed
Main Confidence / confidence (push) Failing after 45s
feat: compress governance operator outcomes (#253)
## Summary
- introduce surface-aware compressed governance outcomes and reuse the shared truth/explanation seams for operator-first summaries
- apply the compressed outcome hierarchy across baseline, evidence, review, review-pack, canonical review/evidence, and artifact-oriented operation-run surfaces
- expand spec 214 fixtures and Pest coverage, and fix tenant-panel route assertions by generating explicit tenant-panel URLs in the affected Filament tests

## Validation
- `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent`
- focused governance compression suite from `specs/214-governance-outcome-compression/quickstart.md` passed (`68` tests, `445` assertions)
- `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryItemResourceTest.php tests/Feature/Filament/BackupSetUiEnforcementTest.php tests/Feature/Filament/RestoreRunUiEnforcementTest.php` passed (`18` tests, `81` assertions)

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #253
2026-04-19 12:30:36 +00:00

69 lines
1.9 KiB
Plaintext

import { is } from "../entity.js";
import { pgPolicy } from "../pg-core/index.js";
import { PgRole, pgRole } from "../pg-core/roles.js";
import { sql } from "../sql/sql.js";
const crudPolicy = (options) => {
if (options.read === void 0) {
throw new Error("crudPolicy requires a read policy");
}
if (options.modify === void 0) {
throw new Error("crudPolicy requires a modify policy");
}
let read;
if (options.read === true) {
read = sql`true`;
} else if (options.read === false) {
read = sql`false`;
} else if (options.read !== null) {
read = options.read;
}
let modify;
if (options.modify === true) {
modify = sql`true`;
} else if (options.modify === false) {
modify = sql`false`;
} else if (options.modify !== null) {
modify = options.modify;
}
let rolesName = "";
if (Array.isArray(options.role)) {
rolesName = options.role.map((it) => {
return is(it, PgRole) ? it.name : it;
}).join("-");
} else {
rolesName = is(options.role, PgRole) ? options.role.name : options.role;
}
return [
read && pgPolicy(`crud-${rolesName}-policy-select`, {
for: "select",
to: options.role,
using: read
}),
modify && pgPolicy(`crud-${rolesName}-policy-insert`, {
for: "insert",
to: options.role,
withCheck: modify
}),
modify && pgPolicy(`crud-${rolesName}-policy-update`, {
for: "update",
to: options.role,
using: modify,
withCheck: modify
}),
modify && pgPolicy(`crud-${rolesName}-policy-delete`, {
for: "delete",
to: options.role,
using: modify
})
].filter(Boolean);
};
const authenticatedRole = pgRole("authenticated").existing();
const anonymousRole = pgRole("anonymous").existing();
const authUid = (userIdColumn) => sql`(select auth.user_id() = ${userIdColumn})`;
export {
anonymousRole,
authUid,
authenticatedRole,
crudPolicy
};
//# sourceMappingURL=rls.js.map