fix: close platform access re-review findings
This commit is contained in:
@@ -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: [] },
|
||||
);
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -559,7 +559,7 @@ export const resources: ResourceUiDefinition[] = [
|
||||
action(
|
||||
'分配菜单',
|
||||
'/platform/platform_role/:identity/menu',
|
||||
['menu_identities!'],
|
||||
['menu_identities'],
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user