Fix user details risk tab shows when FF is disabled (#132918)

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Pablo Machado 2022-05-30 10:43:20 +02:00 committed by GitHub
parent 165be7d309
commit 42198ab481
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 44 additions and 5 deletions

View file

@ -52,6 +52,7 @@ import { UsersType } from '../../store/model';
import { hasMlUserPermissions } from '../../../../common/machine_learning/has_ml_user_permissions';
import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities';
import { LandingPageComponent } from '../../../common/components/landing_page';
import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features';
const QUERY_ID = 'UsersDetailsQueryId';
const UsersDetailsComponent: React.FC<UsersDetailsProps> = ({
@ -59,6 +60,7 @@ const UsersDetailsComponent: React.FC<UsersDetailsProps> = ({
usersDetailsPagePath,
}) => {
const dispatch = useDispatch();
const riskyUsersFeatureEnabled = useIsExperimentalFeatureEnabled('riskyUsersEnabled');
const getTimeline = useMemo(() => timelineSelectors.getTimelineByIdSelector(), []);
const graphEventId = useShallowEqualSelector(
(state) => (getTimeline(state, TimelineId.hostsPageEvents) ?? timelineDefaults).graphEventId
@ -170,7 +172,11 @@ const UsersDetailsComponent: React.FC<UsersDetailsProps> = ({
<EuiSpacer />
<SecuritySolutionTabNavigation
navTabs={navTabsUsersDetails(detailName, hasMlUserPermissions(capabilities))}
navTabs={navTabsUsersDetails(
detailName,
hasMlUserPermissions(capabilities),
riskyUsersFeatureEnabled
)}
/>
<EuiSpacer />

View file

@ -0,0 +1,24 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { UsersTableType } from '../../store/model';
import { navTabsUsersDetails } from './nav_tabs';
describe('navTabsUsersDetails', () => {
test('it should not display anomalies tab if user has no ml permission', () => {
const tabs = navTabsUsersDetails('username', false, true);
expect(tabs).not.toHaveProperty(UsersTableType.anomalies);
expect(tabs).toHaveProperty(UsersTableType.risk);
});
test('it should not display risk tab if isRiskyUserEnabled disabled', () => {
const tabs = navTabsUsersDetails('username', true, false);
// expect(tabs).toHaveProperty(UsersTableType.allUsers);
expect(tabs).toHaveProperty(UsersTableType.anomalies);
expect(tabs).not.toHaveProperty(UsersTableType.risk);
});
});

View file

@ -16,8 +16,11 @@ const getTabsOnUsersDetailsUrl = (userName: string, tabName: UsersTableType) =>
export const navTabsUsersDetails = (
userName: string,
hasMlUserPermissions: boolean
hasMlUserPermissions: boolean,
isRiskyUserEnabled: boolean
): UsersDetailsNavTab => {
const hiddenTabs = [];
const userDetailsNavTabs = {
[UsersTableType.authentications]: {
id: UsersTableType.authentications,
@ -51,7 +54,13 @@ export const navTabsUsersDetails = (
},
};
return hasMlUserPermissions
? userDetailsNavTabs
: omit([UsersTableType.anomalies], userDetailsNavTabs);
if (!hasMlUserPermissions) {
hiddenTabs.push(UsersTableType.anomalies);
}
if (!isRiskyUserEnabled) {
hiddenTabs.push(UsersTableType.risk);
}
return omit(hiddenTabs, userDetailsNavTabs);
};