Skip to content
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
1a90101
refactor: restructure security components and update navigation for v…
arunjaindev Nov 14, 2025
05e0798
feat: implement CVE list component with filtering options and integra…
arunjaindev Nov 17, 2025
b1a5d8b
feat: implement CVE list component with filtering options and integra…
arunjaindev Nov 17, 2025
cb8ed90
Revert "feat: implement CVE list component with filtering options and…
arunjaindev Nov 17, 2025
51b532a
feat: add SecurityEnablement route and integrate into Security compon…
arunjaindev Nov 17, 2025
29a2bf6
refactor: update scan status handling to use ScanTypeOptions and impr…
arunjaindev Nov 17, 2025
a4a0299
refactor: reorganize imports and define ScanTypeOptions enum for bett…
arunjaindev Nov 18, 2025
97701aa
refactor: remove unused import and clean up utility functions in CVEL…
arunjaindev Nov 18, 2025
7096c46
feat: implement search functionality in WorkflowEdit component; add S…
arunjaindev Nov 19, 2025
188ed3e
Merge branch 'kubecon-2025' into feat/scan-cve-listing
arunjaindev Nov 21, 2025
f84dea0
feat: add VulnerabilitySummary component and integrate it into CVELis…
arunjaindev Nov 24, 2025
26b77b1
Merge branch 'feat/scan-cve-listing' of https://github.com/devtron-la…
arunjaindev Nov 24, 2025
7518e09
fix: update @devtron-labs/devtron-fe-common-lib dependency to version…
arunjaindev Nov 24, 2025
21856d1
feat: enhance CVEList with sortable columns for severity and discover…
arunjaindev Nov 24, 2025
e2877e2
feat: Implement CVE list table with enhanced filtering and error hand…
arunjaindev Nov 25, 2025
848185d
refactor: simplify CVE ID generation by removing redundant spread ope…
arunjaindev Nov 25, 2025
de6369d
refactor: Adjust security scans tab layout gap
arunjaindev Nov 26, 2025
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
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"private": true,
"homepage": "/dashboard",
"dependencies": {
"@devtron-labs/devtron-fe-common-lib": "1.20.6-pre-51",
"@devtron-labs/devtron-fe-common-lib": "1.20.6-pre-52",
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
"@rjsf/core": "^5.13.3",
"@rjsf/utils": "^5.13.3",
Expand Down

This file was deleted.

1 change: 0 additions & 1 deletion src/Pages-Devtron-2.0/SecurityCenter/Overview/index.ts

This file was deleted.

19 changes: 13 additions & 6 deletions src/components/Navigation/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -359,10 +359,17 @@ export const NAVIGATION_LIST: NavigationGroupType[] = [
icon: 'ic-chart-line-up',
},
{
title: 'Security Scans',
dataTestId: 'security-scans',
id: 'security-center-security-scans',
href: COMMON_URLS.SECURITY_CENTER_SCANS,
title: 'Vulnerabilities',
dataTestId: 'security-vulnerabilities',
id: 'security-center-security-vulnerabilities',
href: COMMON_URLS.SECURITY_CENTER_VULNERABILITIES,
icon: 'ic-bug',
},
{
title: 'Security Enablement',
dataTestId: 'security-enablement',
id: 'security-center-security-enablement',
href: COMMON_URLS.SECURITY_CENTER_SECURITY_ENABLEMENT,
icon: 'ic-security-scan',
},
{
Expand Down Expand Up @@ -486,8 +493,8 @@ export const NAVIGATION_LIST: NavigationGroupType[] = [
href: `${URLS.GLOBAL_CONFIG_AUTH}/${Routes.SSO_LOGIN_SERVICES}`,
},
{
title: 'Host URLS',
dataTestId: 'host-urls',
title: 'Host URL',
dataTestId: 'host-url',
id: 'global-configuration-host-urls',
icon: 'ic-link',
href: URLS.GLOBAL_CONFIG_HOST_URL,
Expand Down
12 changes: 6 additions & 6 deletions src/components/security/AddCVEPolicy/VulnerabilityExposure.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,18 +92,18 @@ const ExposureListContainer = ({ urlFilters }: ExposureListContainerProps) => {
)
}

const clusterListOptions: SelectPickerOptionType[] = filtersResponse?.filters.clusters || []
const environmentListOptions: SelectPickerOptionType[] = filtersResponse?.filters.environments || []
const clusterListOptions: SelectPickerOptionType[] = filtersResponse?.cluster || []
const environmentListOptions: SelectPickerOptionType[] = filtersResponse?.environment || []

const getFilterLabelFromValue = (filterKey: string, filterValue: string) => {
if (filterKey === VulnerabilityExposureFilterKeys.cluster) {
return (
filtersResponse?.filters.clusters.find((clusterOption) => clusterOption.value === filterValue)?.label ??
filterValue
(filtersResponse?.cluster.find((clusterOption) => clusterOption.value === filterValue)
?.label as string) ?? filterValue
)
}
return (
filtersResponse?.filters.environments.find((envOption) => envOption.value === filterValue)?.label ??
(filtersResponse?.environment.find((envOption) => envOption.value === filterValue)?.label as string) ??
filterValue
)
}
Expand All @@ -114,7 +114,7 @@ const ExposureListContainer = ({ urlFilters }: ExposureListContainerProps) => {
}))

const selectedEnvironments: SelectPickerOptionType[] = environment.map((envId) => ({
label: getFilterLabelFromValue(VulnerabilityExposureFilterKeys.cluster, envId),
label: getFilterLabelFromValue(VulnerabilityExposureFilterKeys.environment, envId),
value: envId,
}))

Expand Down
17 changes: 0 additions & 17 deletions src/components/security/AddCveModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

import React, { Component } from 'react'
import { Progressing, VisibleModal, CustomInput } from '@devtron-labs/devtron-fe-common-lib'
import { getCVEPolicies } from './security.service'
import { CVE_ID_NOT_FOUND, ViewType } from '../../config'
import { AddCveModalProps, AddCveModalState, ClusterEnvironment, VulnerabilityAction } from './security.types'
import { ReactComponent as Close } from '../../assets/icons/ic-close.svg'
Expand All @@ -33,7 +32,6 @@ export class AddCveModal extends Component<AddCveModalProps, AddCveModalState> {
}
this.handleCveChange = this.handleCveChange.bind(this)
this.handlePolicyChange = this.handlePolicyChange.bind(this)
this.searchCVE = this.searchCVE.bind(this)
}

handleCveChange(event: React.ChangeEvent<HTMLInputElement>): void {
Expand All @@ -54,21 +52,6 @@ export class AddCveModal extends Component<AddCveModalProps, AddCveModalState> {
}
}

searchCVE(event): void {
this.setState({ view: ViewType.LOADING })
getCVEPolicies(this.state.cve)
.then((response) => {
this.setState({
cve: this.state.cve,
clusters: response.result.clusters,
view: ViewType.FORM,
})
})
.catch((error) => {
this.setState({ view: ViewType.FORM, isCveError: true })
})
}

renderHeader() {
return (
<div className="modal__header ml-24 mr-24">
Expand Down
14 changes: 10 additions & 4 deletions src/components/security/Security.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@ import { URLS } from '@devtron-labs/devtron-fe-common-lib'

import { importComponentFromFELibrary } from '@Components/common'

import { SecurityScansTab } from './SecurityScansTab/SecurityScansTab'
import { SecurityPoliciesTab } from './SecurityPoliciesTab'
import { VulnerabilitiesRouter } from './Vulnerabilities'

import './security.scss'

const SecurityCenterOverview = importComponentFromFELibrary('SecurityCenterOverview', null, 'function')
const SecurityEnablement = importComponentFromFELibrary('SecurityEnablement', null, 'function')

export const Security = () => (
<Switch>
Expand All @@ -34,12 +35,17 @@ export const Security = () => (
<SecurityCenterOverview />
</Route>
)}
<Route exact path={URLS.SECURITY_CENTER_SCANS}>
<SecurityScansTab />
<Route path={URLS.SECURITY_CENTER_VULNERABILITIES}>
<VulnerabilitiesRouter />
</Route>
{SecurityEnablement && (
<Route path={URLS.SECURITY_CENTER_SECURITY_ENABLEMENT}>
<SecurityEnablement />
</Route>
)}
<Route path={URLS.SECURITY_CENTER_POLICIES}>
<SecurityPoliciesTab />
</Route>
<Redirect to={SecurityCenterOverview ? URLS.SECURITY_CENTER_OVERVIEW : URLS.SECURITY_CENTER_SCANS} />
<Redirect to={SecurityCenterOverview ? URLS.SECURITY_CENTER_OVERVIEW : URLS.SECURITY_CENTER_VULNERABILITIES} />
</Switch>
)
25 changes: 0 additions & 25 deletions src/components/security/SecurityPageHeader.tsx

This file was deleted.

25 changes: 23 additions & 2 deletions src/components/security/SecurityPoliciesTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,35 @@
*/

import { Switch, Route, Redirect, NavLink, useRouteMatch } from 'react-router-dom'

import {
BreadCrumb,
BreadcrumbText,
getSecurityCenterBreadcrumb,
PageHeader,
useBreadcrumb,
} from '@devtron-labs/devtron-fe-common-lib'

import { SecurityPolicyGlobal } from './SecurityPolicyGlobal'
import { SecurityPolicyCluster } from './SecurityPolicyCluster'
import { SecurityPolicyApp } from './SecurityPolicyApp'
import { SecurityPolicyEnvironment } from './SecurityPolicyEnvironment'
import { VulnerabilityExposure } from './AddCVEPolicy'
import { SecurityPageHeader } from './SecurityPageHeader'

export const SecurityPoliciesTab = () => {
const { path } = useRouteMatch()

const { breadcrumbs } = useBreadcrumb({
alias: {
...getSecurityCenterBreadcrumb(),
policies: {
component: <BreadcrumbText heading="Security Policies" isActive />,
},
},
})

const renderBreadcrumbs = () => <BreadCrumb breadcrumbs={breadcrumbs} />

const renderRouter = () => {
return (
<Switch>
Expand All @@ -39,7 +59,8 @@ export const SecurityPoliciesTab = () => {

return (
<div className="security-scan-container bg__primary flexbox-col min-h-100">
<SecurityPageHeader />
<PageHeader isBreadcrumbs breadCrumbs={renderBreadcrumbs} />

<div className="security-policy flex-grow-1">
<div className="dc__secondary-nav">
<NavLink
Expand Down
Loading
Loading