fix: scope storage type picker to the target organization
The storage create form fetched persistent-volume types once with no tenant scope, so in the platform-admin "All" view the dropdown listed every org's types and never re-scoped when the create-scope picker retargeted the form — letting an org with no cluster-access grant pick another org's types. The inline "add storage" sub-drawer in the instance create form had the same gap plus a redundant org picker that could retarget the storage away from the instance's org. Both surfaces now pin the storage-type list to the chosen org (via the X-Organization-Id header); the sub-drawer inherits the instance's scope and hides its own picker. Page/table listings stay unscoped so every row's type label still renders.
This commit is contained in:
@@ -12,7 +12,23 @@ import { useContext } from 'react';
|
||||
import { FormContext } from '../config/form-context';
|
||||
import { FormData } from '../config/types';
|
||||
|
||||
const Basic = ({ action, open }: { action: string; open: boolean }) => {
|
||||
const Basic = ({
|
||||
action,
|
||||
open,
|
||||
showOrgScope = true,
|
||||
onOrgScopeChange
|
||||
}: {
|
||||
action: string;
|
||||
open: boolean;
|
||||
// Hosts that already fix the tenant scope elsewhere (e.g. the instance
|
||||
// create form, which owns the org picker) hide this slot so the storage
|
||||
// is created in the surrounding scope rather than a second, conflicting
|
||||
// one.
|
||||
showOrgScope?: boolean;
|
||||
// Fired on a user selection in the create-scope picker so the host can
|
||||
// reload the org-scoped storage-type list.
|
||||
onOrgScopeChange?: (orgId: number | null | undefined) => void;
|
||||
}) => {
|
||||
const intl = useIntl();
|
||||
const { getRuleMessage } = useAppUtils();
|
||||
const { storageClassList } = useContext(FormContext);
|
||||
@@ -44,7 +60,12 @@ const Basic = ({ action, open }: { action: string; open: boolean }) => {
|
||||
label={intl.formatMessage({ id: 'common.table.displayName' })}
|
||||
/>
|
||||
</Form.Item>
|
||||
<PluginExtraFields name="CreateOrgScopeField" context={{ action }} />
|
||||
{showOrgScope && (
|
||||
<PluginExtraFields
|
||||
name="CreateOrgScopeField"
|
||||
context={{ action, onChange: onOrgScopeChange }}
|
||||
/>
|
||||
)}
|
||||
<Flex gap={16}>
|
||||
<div style={{ flex: 1 }}>
|
||||
<Form.Item<FormData>
|
||||
|
||||
Reference in New Issue
Block a user