Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,27 @@
*/

import {
EuiAccordion,
EuiButton,
EuiButtonEmpty,
EuiAccordion,
EuiFlexGroup,
EuiFlexItem,
EuiHorizontalRule,
EuiPanel,
EuiSpacer,
EuiFlexGroup,
EuiResizableContainer,
EuiFlexItem,
EuiSpacer,
} from '@elastic/eui';
import React, { memo, useCallback, useRef, useState, useMemo, useEffect } from 'react';
import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';
import styled from 'styled-components';

import { ProjectRoutingAccess, useRouteBasedCpsPickerAccess } from '@kbn/cps-utils';
import { ruleTypeMappings } from '@kbn/securitysolution-rules';
import { useGetEndpointExceptionsPerPolicyOptIn } from '../../../../management/hooks/artifacts/use_endpoint_per_policy_opt_in';
import { EndpointExceptionsMovedCallout } from '../../../../exceptions/components/endpoint_exceptions_moved_callout';
import { useAppToasts } from '../../../../common/hooks/use_app_toasts';
import {
isEsqlRule,
isMlRule,
isThreatMatchRule,
isEsqlRule,
} from '../../../../../common/detection_engine/utils';
import { useCreateRule } from '../../../rule_management/logic';
import type { RuleCreateProps } from '../../../../../common/api/detection_engine/model/rule_schema';
Expand All @@ -53,9 +52,9 @@ import {
} from '../../../rule_creation/components/step_rule_actions';
import * as RuleI18n from '../../../common/translations';
import {
redirectToDetections,
getActionMessageParams,
MaxWidthEuiFlexItem,
redirectToDetections,
} from '../../../common/helpers';
import type { DefineStepRule } from '../../../common/types';
import { RuleStep } from '../../../common/types';
Expand Down Expand Up @@ -118,9 +117,8 @@ const MyEuiPanel = styled(EuiPanel)<{
MyEuiPanel.displayName = 'MyEuiPanel';

const CreateRulePageComponent: React.FC<{}> = () => {
const { application, triggersActionsUi, cps } = useKibana().services;
const { application, triggersActionsUi } = useKibana().services;
const { navigateToApp } = application;
useRouteBasedCpsPickerAccess(ProjectRoutingAccess.READONLY, { application, cps });
const [{ loading: userInfoLoading, isSignalIndexExists, isAuthenticated, hasEncryptionKey }] =
useUserData();
const canEditRules = useUserPrivileges().rulesPrivileges.rules.edit;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ import { FormattedMessage } from '@kbn/i18n-react';
import type { FC } from 'react';
import React, { memo, useCallback, useMemo, useRef, useState } from 'react';
import { useParams } from 'react-router-dom';

import { ProjectRoutingAccess, useRouteBasedCpsPickerAccess } from '@kbn/cps-utils';
import { ruleTypeMappings } from '@kbn/securitysolution-rules';
import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants';
import { useGetEndpointExceptionsPerPolicyOptIn } from '../../../../management/hooks/artifacts/use_endpoint_per_policy_opt_in';
Expand Down Expand Up @@ -86,9 +84,8 @@ import { RuleCreationEventTypes } from '../../../../common/lib/telemetry/types';

const EditRulePageComponent: FC<{ rule: RuleResponse }> = ({ rule }) => {
const { addSuccess } = useAppToasts();
const { application, triggersActionsUi, cps, telemetry, aiRuleCreation } = useKibana().services;
const { application, triggersActionsUi, telemetry, aiRuleCreation } = useKibana().services;
const { navigateToApp } = application;
useRouteBasedCpsPickerAccess(ProjectRoutingAccess.READONLY, { application, cps });
const [{ loading: userInfoLoading, isSignalIndexExists, isAuthenticated, hasEncryptionKey }] =
useUserData();
const { loading: listsConfigLoading, needsConfiguration: needsListsConfiguration } =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ import {
tableDefaults,
TableId,
} from '@kbn/securitysolution-data-table';
import { ProjectRoutingAccess, useRouteBasedCpsPickerAccess } from '@kbn/cps-utils';
import { PageScope } from '../../../../data_view_manager/constants';
import { RuleCustomizationsContextProvider } from '../../../rule_management/components/rule_details/rule_customizations_diff/rule_customizations_context';
import { useGroupTakeActionsItems } from '../../../../detections/hooks/alerts_table/use_group_take_action_items';
Expand Down Expand Up @@ -236,14 +235,12 @@ export const RuleDetailsPage = connector(
clearEventsLoading,
clearSelected,
}: DetectionEngineComponentProps) {
const { application, cps, timelines: timelinesUi, spaces: spacesApi } = useKibana().services;
const { application, timelines: timelinesUi, spaces: spacesApi } = useKibana().services;
const {
navigateToApp,
capabilities: { actions },
} = application;

useRouteBasedCpsPickerAccess(ProjectRoutingAccess.READONLY, { application, cps });

const dispatch = useDispatch();
const containerElement = useRef<HTMLDivElement | null>(null);
const getTable = useMemo(() => dataTableSelectors.getTableByIdSelector(), []);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@

import { EuiSpacer } from '@elastic/eui';
import React from 'react';
import { ProjectRoutingAccess, useRouteBasedCpsPickerAccess } from '@kbn/cps-utils';
import { useKibana } from '../../../../common/lib/kibana';
import { useRouteSpy } from '../../../../common/utils/route/use_route_spy';
import { useSyncRulesTableSavedState } from './rules_table/use_sync_rules_table_saved_state';
import { RulesTables } from './rules_tables';
Expand All @@ -30,8 +28,6 @@ export const AllRules = React.memo(() => {
useSyncRulesTableSavedState();
const [{ tabName }] = useRouteSpy();

const { application, cps } = useKibana().services;
useRouteBasedCpsPickerAccess(ProjectRoutingAccess.READONLY, { application, cps });
if (tabName !== AllRulesTabs.updates) {
return (
<>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
*/

import React from 'react';

import { ProjectRoutingAccess, useRouteBasedCpsPickerAccess } from '@kbn/cps-utils';
import { redirectToDetections } from '../../../common/helpers';
import { SecurityPageName } from '../../../../app/types';
import { HeaderPage } from '../../../../common/components/header_page';
Expand All @@ -28,12 +26,11 @@ import { MissingDetectionsPrivilegesCallOut } from '../../../../detections/compo
import { getDetectionEngineUrl } from '../../../../common/components/link_to';

const AddRulesPageComponent: React.FC = () => {
const { application, cps } = useKibana().services;
const { application } = useKibana().services;
const { navigateToApp } = application;

const [{ isSignalIndexExists, isAuthenticated, hasEncryptionKey }] = useUserData();
const { needsConfiguration: needsListsConfiguration } = useListsConfig();
useRouteBasedCpsPickerAccess(ProjectRoutingAccess.READONLY, { application, cps });

if (
redirectToDetections(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,21 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/

import React from 'react';
import { useRouteBasedCpsPickerAccess, ProjectRoutingAccess } from '@kbn/cps-utils';
import { SecuritySolutionPageWrapper } from '../../../../common/components/page_wrapper';
import { SpyRoute } from '../../../../common/utils/route/spy_routes';
import { SecurityPageName } from '../../../../app/types';
import { CoverageOverviewDashboardContextProvider } from './coverage_overview_dashboard_context';
import { CoverageOverviewDashboard } from './coverage_overview_dashboard';
import { useKibana } from '../../../../common/lib/kibana';

export const CoverageOverviewPage = () => {
const { application, cps } = useKibana().services;
useRouteBasedCpsPickerAccess(ProjectRoutingAccess.READONLY, { application, cps });

return (
<>
<CoverageOverviewDashboardContextProvider>
<SecuritySolutionPageWrapper data-test-subj="coverageOverviewPage">
<CoverageOverviewDashboard />
</SecuritySolutionPageWrapper>
</CoverageOverviewDashboardContextProvider>
<SpyRoute pageName={SecurityPageName.coverageOverview} />
</>
);
};
export const CoverageOverviewPage = () => (
<>
<CoverageOverviewDashboardContextProvider>
<SecuritySolutionPageWrapper data-test-subj="coverageOverviewPage">
<CoverageOverviewDashboard />
</SecuritySolutionPageWrapper>
</CoverageOverviewDashboardContextProvider>
<SpyRoute pageName={SecurityPageName.coverageOverview} />
</>
);
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/

import type { FC } from 'react';
import React, { useCallback, useMemo, useState } from 'react';

Expand All @@ -15,7 +16,6 @@ import {
import { EuiScreenReaderLive, EuiSkeletonText } from '@elastic/eui';
import { useLocation, useParams } from 'react-router-dom';
import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types';
import { ProjectRoutingAccess, useRouteBasedCpsPickerAccess } from '@kbn/cps-utils';
import { SecurityPageName } from '../../../../common/constants';
import { SpyRoute } from '../../../common/utils/route/spy_routes';
import { ReferenceErrorModal } from '../../../common/components/reference_error_modal';
Expand All @@ -25,17 +25,11 @@ import { NotFoundPage } from '../../../app/404';
import { AutoDownload } from '../../../common/components/auto_download/auto_download';
import { LinkToRuleDetails, ListWithSearch, ManageRules } from '../../components';
import { useListDetailsView } from '../../hooks';
import { useKibana } from '../../../common/lib/kibana';
import * as i18n from '../../translations';
import type { CheckExceptionTtlActionTypes } from '../../components/expired_exceptions_list_items_modal';
import { IncludeExpiredExceptionsModal } from '../../components/expired_exceptions_list_items_modal';

export const ListsDetailViewComponent: FC = () => {
const {
services: { application, cps },
} = useKibana();
useRouteBasedCpsPickerAccess(ProjectRoutingAccess.READONLY, { application, cps });

const { detailName: exceptionListId } = useParams<{
detailName: string;
}>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import type { ExceptionListFilter, NamespaceType } from '@kbn/securitysolution-i
import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types';
import { useApi, useExceptionLists } from '@kbn/securitysolution-list-hooks';
import { EmptyViewerState, ViewerStatus } from '@kbn/securitysolution-exception-list-components';
import { ProjectRoutingAccess, useRouteBasedCpsPickerAccess } from '@kbn/cps-utils';

import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants';
import { useGetEndpointExceptionsPerPolicyOptIn } from '../../../management/hooks/artifacts/use_endpoint_per_policy_opt_in';
Expand Down Expand Up @@ -106,10 +105,9 @@ export const SharedLists = React.memo(() => {
const canWriteEndpointExceptions = useEndpointExceptionsCapability('crudEndpointExceptions');

const {
services: { http, application, cps, notifications, timelines },
services: { http, application, notifications, timelines },
} = useKibana();
const { navigateToApp } = application;
useRouteBasedCpsPickerAccess(ProjectRoutingAccess.READONLY, { application, cps });
const { exportExceptionList, deleteExceptionList, duplicateExceptionList } = useApi(http);

const [showReferenceErrorModal, setShowReferenceErrorModal] = useState(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -332,13 +332,8 @@ export class Plugin implements IPlugin<PluginSetup, PluginStart, SetupPlugins, S
});
}

// Enable CPS picker only for individual dashboard views (not the listing page).
// TODO: Remove this restriction once CPS is enabled across all Security Solution pages.
plugins.cps?.cpsManager?.registerAppAccess(APP_UI_ID, (location: string) =>
/security\/dashboards\/[^?]+/.test(location)
? ProjectRoutingAccess.EDITABLE
: ProjectRoutingAccess.DISABLED
);
// Enable CPS picker in READ_ONLY mode for all Security Solution pages
plugins.cps?.cpsManager?.registerAppAccess(APP_UI_ID, () => ProjectRoutingAccess.READONLY);
Comment thread
PhilippeOberti marked this conversation as resolved.

return this.contract.getStartContract(core);
}
Expand Down
Loading