mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 09:19:04 -04:00
Co-authored-by: Christos Nasikas <christos.nasikas@elastic.co>
This commit is contained in:
parent
3fd731d5fe
commit
44fdcd67ad
12 changed files with 35 additions and 18 deletions
|
@ -227,12 +227,14 @@ function ObservabilityActions({
|
|||
event,
|
||||
casePermissions,
|
||||
appId: observabilityFeatureId,
|
||||
owner: observabilityFeatureId,
|
||||
onClose: afterCaseSelection,
|
||||
}),
|
||||
timelines.getAddToNewCaseButton({
|
||||
event,
|
||||
casePermissions,
|
||||
appId: observabilityFeatureId,
|
||||
owner: observabilityFeatureId,
|
||||
onClose: afterCaseSelection,
|
||||
}),
|
||||
]
|
||||
|
@ -364,6 +366,7 @@ export function AlertsTableTGrid(props: AlertsTableTGridProps) {
|
|||
const sortDirection: SortDirection = 'desc';
|
||||
return {
|
||||
appId: observabilityFeatureId,
|
||||
casesOwner: observabilityFeatureId,
|
||||
casePermissions,
|
||||
type,
|
||||
columns,
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
import { useMemo } from 'react';
|
||||
import { useGetUserCasesPermissions, useKibana } from '../../../../common/lib/kibana';
|
||||
import { TimelineId, TimelineNonEcsData } from '../../../../../common';
|
||||
import { APP_ID } from '../../../../../common/constants';
|
||||
import { APP_ID, APP_UI_ID } from '../../../../../common/constants';
|
||||
import { useInsertTimeline } from '../../../../cases/components/use_insert_timeline';
|
||||
import { Ecs } from '../../../../../common/ecs';
|
||||
|
||||
|
@ -39,7 +39,8 @@ export const useAddToCaseActions = ({
|
|||
event: { data: nonEcsData ?? [], ecs: ecsData, _id: ecsData?._id },
|
||||
useInsertTimeline: insertTimelineHook,
|
||||
casePermissions,
|
||||
appId: APP_ID,
|
||||
appId: APP_UI_ID,
|
||||
owner: APP_ID,
|
||||
onClose: afterCaseSelection,
|
||||
}
|
||||
: null,
|
||||
|
|
|
@ -35,7 +35,8 @@ describe('AddToCaseAction', () => {
|
|||
crud: true,
|
||||
read: true,
|
||||
},
|
||||
appId: 'securitySolution',
|
||||
appId: 'securitySolutionUI',
|
||||
owner: 'securitySolution',
|
||||
onClose: () => null,
|
||||
};
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ export interface AddToCaseActionProps {
|
|||
read: boolean;
|
||||
} | null;
|
||||
appId: string;
|
||||
owner: string;
|
||||
onClose?: Function;
|
||||
disableAlerts?: boolean;
|
||||
}
|
||||
|
@ -35,6 +36,7 @@ const AddToCaseActionComponent: React.FC<AddToCaseActionProps> = ({
|
|||
useInsertTimeline,
|
||||
casePermissions,
|
||||
appId,
|
||||
owner,
|
||||
onClose,
|
||||
disableAlerts,
|
||||
}) => {
|
||||
|
@ -50,7 +52,7 @@ const AddToCaseActionComponent: React.FC<AddToCaseActionProps> = ({
|
|||
createCaseUrl,
|
||||
isAllCaseModalOpen,
|
||||
isCreateCaseFlyoutOpen,
|
||||
} = useAddToCase({ event, useInsertTimeline, casePermissions, appId, onClose });
|
||||
} = useAddToCase({ event, useInsertTimeline, casePermissions, appId, owner, onClose });
|
||||
|
||||
const getAllCasesSelectorModalProps = useMemo(() => {
|
||||
const { ruleId, ruleName } = normalizedEventFields(event);
|
||||
|
@ -62,7 +64,7 @@ const AddToCaseActionComponent: React.FC<AddToCaseActionProps> = ({
|
|||
id: ruleId,
|
||||
name: ruleName,
|
||||
},
|
||||
owner: appId,
|
||||
owner,
|
||||
},
|
||||
createCaseNavigation: {
|
||||
href: createCaseUrl,
|
||||
|
@ -75,7 +77,7 @@ const AddToCaseActionComponent: React.FC<AddToCaseActionProps> = ({
|
|||
onRowClick: onCaseClicked,
|
||||
updateCase: onCaseSuccess,
|
||||
userCanCrud: casePermissions?.crud ?? false,
|
||||
owner: [appId],
|
||||
owner: [owner],
|
||||
onClose: () =>
|
||||
dispatch(tGridActions.setOpenAddToExistingCase({ id: eventId, isOpen: false })),
|
||||
};
|
||||
|
@ -87,8 +89,8 @@ const AddToCaseActionComponent: React.FC<AddToCaseActionProps> = ({
|
|||
goToCreateCase,
|
||||
eventId,
|
||||
eventIndex,
|
||||
appId,
|
||||
dispatch,
|
||||
owner,
|
||||
useInsertTimeline,
|
||||
event,
|
||||
]);
|
||||
|
@ -105,7 +107,7 @@ const AddToCaseActionComponent: React.FC<AddToCaseActionProps> = ({
|
|||
onCloseFlyout={closeCaseFlyoutOpen}
|
||||
onSuccess={onCaseSuccess}
|
||||
useInsertTimeline={useInsertTimeline}
|
||||
appId={appId}
|
||||
owner={owner}
|
||||
disableAlerts={disableAlerts}
|
||||
/>
|
||||
)}
|
||||
|
|
|
@ -25,6 +25,7 @@ const AddToCaseActionButtonComponent: React.FC<AddToCaseActionProps> = ({
|
|||
useInsertTimeline,
|
||||
casePermissions,
|
||||
appId,
|
||||
owner,
|
||||
onClose,
|
||||
}) => {
|
||||
const {
|
||||
|
@ -36,7 +37,7 @@ const AddToCaseActionButtonComponent: React.FC<AddToCaseActionProps> = ({
|
|||
openPopover,
|
||||
closePopover,
|
||||
isPopoverOpen,
|
||||
} = useAddToCase({ event, useInsertTimeline, casePermissions, appId, onClose });
|
||||
} = useAddToCase({ event, useInsertTimeline, casePermissions, appId, owner, onClose });
|
||||
const tooltipContext = userCanCrud
|
||||
? isEventSupported
|
||||
? i18n.ACTION_ADD_TO_CASE_TOOLTIP
|
||||
|
|
|
@ -18,6 +18,7 @@ const AddToCaseActionComponent: React.FC<AddToCaseActionProps> = ({
|
|||
useInsertTimeline,
|
||||
casePermissions,
|
||||
appId,
|
||||
owner,
|
||||
onClose,
|
||||
}) => {
|
||||
const { addExistingCaseClick, isDisabled, userCanCrud } = useAddToCase({
|
||||
|
@ -25,6 +26,7 @@ const AddToCaseActionComponent: React.FC<AddToCaseActionProps> = ({
|
|||
useInsertTimeline,
|
||||
casePermissions,
|
||||
appId,
|
||||
owner,
|
||||
onClose,
|
||||
});
|
||||
return (
|
||||
|
|
|
@ -18,6 +18,7 @@ const AddToCaseActionComponent: React.FC<AddToCaseActionProps> = ({
|
|||
useInsertTimeline,
|
||||
casePermissions,
|
||||
appId,
|
||||
owner,
|
||||
onClose,
|
||||
}) => {
|
||||
const { addNewCaseClick, isDisabled, userCanCrud } = useAddToCase({
|
||||
|
@ -25,6 +26,7 @@ const AddToCaseActionComponent: React.FC<AddToCaseActionProps> = ({
|
|||
useInsertTimeline,
|
||||
casePermissions,
|
||||
appId,
|
||||
owner,
|
||||
onClose,
|
||||
});
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ const onSuccess = jest.fn();
|
|||
const defaultProps = {
|
||||
onCloseFlyout,
|
||||
onSuccess,
|
||||
appId: 'securitySolution',
|
||||
owner: 'securitySolution',
|
||||
};
|
||||
|
||||
describe('CreateCaseFlyout', () => {
|
||||
|
|
|
@ -19,7 +19,7 @@ export interface CreateCaseModalProps {
|
|||
onCloseFlyout: () => void;
|
||||
onSuccess: (theCase: Case) => Promise<void>;
|
||||
useInsertTimeline?: Function;
|
||||
appId: string;
|
||||
owner: string;
|
||||
disableAlerts?: boolean;
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ const CreateCaseFlyoutComponent: React.FC<CreateCaseModalProps> = ({
|
|||
afterCaseCreated,
|
||||
onCloseFlyout,
|
||||
onSuccess,
|
||||
appId,
|
||||
owner,
|
||||
disableAlerts,
|
||||
}) => {
|
||||
const { cases } = useKibana<TimelinesStartServices>().services;
|
||||
|
@ -80,10 +80,10 @@ const CreateCaseFlyoutComponent: React.FC<CreateCaseModalProps> = ({
|
|||
onCancel: onCloseFlyout,
|
||||
onSuccess,
|
||||
withSteps: false,
|
||||
owner: [appId],
|
||||
owner: [owner],
|
||||
disableAlerts,
|
||||
};
|
||||
}, [afterCaseCreated, onCloseFlyout, onSuccess, appId, disableAlerts]);
|
||||
}, [afterCaseCreated, onCloseFlyout, onSuccess, owner, disableAlerts]);
|
||||
return (
|
||||
<>
|
||||
<GlobalStyle />
|
||||
|
|
|
@ -79,6 +79,7 @@ const ScrollableFlexItem = styled(EuiFlexItem)`
|
|||
|
||||
export interface TGridStandaloneProps {
|
||||
appId: string;
|
||||
casesOwner: string;
|
||||
casePermissions: {
|
||||
crud: boolean;
|
||||
read: boolean;
|
||||
|
@ -121,6 +122,7 @@ export interface TGridStandaloneProps {
|
|||
const TGridStandaloneComponent: React.FC<TGridStandaloneProps> = ({
|
||||
afterCaseSelection,
|
||||
appId,
|
||||
casesOwner,
|
||||
casePermissions,
|
||||
columns,
|
||||
defaultCellActions,
|
||||
|
@ -271,9 +273,10 @@ const TGridStandaloneComponent: React.FC<TGridStandaloneProps> = ({
|
|||
event: selectedEvent,
|
||||
casePermissions: casePermissions ?? null,
|
||||
appId,
|
||||
owner: casesOwner,
|
||||
onClose: afterCaseSelection,
|
||||
};
|
||||
}, [appId, casePermissions, afterCaseSelection, selectedEvent]);
|
||||
}, [appId, casePermissions, afterCaseSelection, selectedEvent, casesOwner]);
|
||||
|
||||
const nonDeletedEvents = useMemo(
|
||||
() => events.filter((e) => !deletedEventIds.includes(e._id)),
|
||||
|
|
|
@ -81,6 +81,7 @@ export const useAddToCase = ({
|
|||
useInsertTimeline,
|
||||
casePermissions,
|
||||
appId,
|
||||
owner,
|
||||
onClose,
|
||||
}: AddToCaseActionProps): UseAddToCase => {
|
||||
const eventId = event?.ecs._id ?? '';
|
||||
|
@ -167,13 +168,13 @@ export const useAddToCase = ({
|
|||
id: ruleId,
|
||||
name: ruleName,
|
||||
},
|
||||
owner: appId,
|
||||
owner,
|
||||
},
|
||||
updateCase,
|
||||
});
|
||||
}
|
||||
},
|
||||
[eventId, eventIndex, appId, dispatch, event]
|
||||
[eventId, eventIndex, owner, dispatch, event]
|
||||
);
|
||||
const onCaseSuccess = useCallback(
|
||||
async (theCase: Case) => {
|
||||
|
@ -187,7 +188,7 @@ export const useAddToCase = ({
|
|||
async (ev) => {
|
||||
ev.preventDefault();
|
||||
return navigateToApp(appId, {
|
||||
deepLinkId: appId === 'securitySolution' ? 'case' : 'cases',
|
||||
deepLinkId: appId === 'securitySolutionUI' ? 'case' : 'cases',
|
||||
path: getCreateCaseUrl(urlSearch),
|
||||
});
|
||||
},
|
||||
|
|
|
@ -66,6 +66,7 @@ const AppRoot = React.memo(
|
|||
timelinesPluginSetup.getTGrid &&
|
||||
timelinesPluginSetup.getTGrid<'standalone'>({
|
||||
appId: 'securitySolution',
|
||||
casesOwner: 'securitySolutionUI',
|
||||
type: 'standalone',
|
||||
casePermissions: {
|
||||
read: true,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue