fix: close platform access re-review findings

This commit is contained in:
2026-07-27 13:12:43 +08:00
parent 169656cc9b
commit 60a12a9654
11 changed files with 316 additions and 32 deletions

View File

@@ -172,3 +172,21 @@ test('platform role UI replaces assigned menu identities through the singular co
assert.match(platformApi, /\/platform\/platform_role\/\$\{identity\}\/menu/);
assert.match(platformApi, /method:\s*['"]PUT['"]/);
});
test('platform role UI permits an empty menu selection to revoke every assignment', () => {
const resources = loadResources();
const { buildResourcePayload, isMissingField } = loadResourceForm();
const role = resources.find((item) => item.name === 'platform_role');
const menuField = role.detailActions
.flatMap((action) => action.fields)
.find((field) => field.key === 'menu_identities');
assert.equal(menuField.required, undefined);
assert.equal(isMissingField([]), true);
assert.deepEqual(
JSON.parse(JSON.stringify(buildResourcePayload([menuField], {
menu_identities: [],
}))),
{ menu_identities: [] },
);
});

View File

@@ -23,6 +23,10 @@ export function buildResourcePayload(
for (const field of fields) {
if (mode === 'edit' && field.type === 'password') continue;
const value = form[field.key];
if (field.type === 'menu-identities' && Array.isArray(value)) {
payload[field.key] = value;
continue;
}
if (isMissingField(value)) {
if (!field.required) continue;
payload[field.key] = value;

View File

@@ -559,7 +559,7 @@ export const resources: ResourceUiDefinition[] = [
action(
'分配菜单',
'/platform/platform_role/:identity/menu',
['menu_identities!'],
['menu_identities'],
),
],
),