Skip to content

Commit 0875faf

Browse files
authored
Added CREATED status for new vulnerability (#2840)
* Added CREATED status for new vulnerability
1 parent 2d70218 commit 0875faf

File tree

6 files changed

+23
-10
lines changed

6 files changed

+23
-10
lines changed

save-backend/src/main/kotlin/com/saveourtool/save/backend/controllers/vulnerability/event/VulnerabilityMetadataListener.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class VulnerabilityMetadataListener(
2323
*/
2424
@EventListener
2525
fun createVulnerabilityMetadata(vulnerabilityEvent: VulnerabilityMetadataEvent) {
26-
if (vulnerabilityEvent.vulnerabilityMetadata.status == VulnerabilityStatus.PENDING_REVIEW) {
26+
if (vulnerabilityEvent.vulnerabilityMetadata.status == VulnerabilityStatus.CREATED) {
2727
val recipients = userDetailsService.findByRole(Role.SUPER_ADMIN.asSpringSecurityRole())
2828
val notifications = recipients.map {
2929
Notification(

save-backend/src/main/kotlin/com/saveourtool/save/backend/security/VulnerabilityPermissionEvaluator.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ class VulnerabilityPermissionEvaluator(
3939
return when {
4040
authentication.hasRole(Role.SUPER_ADMIN) -> true
4141
permission == Permission.READ -> true
42-
permission == Permission.DELETE -> vulnerability.status == VulnerabilityStatus.PENDING_REVIEW && hasFullPermission(vulnerability, authentication)
42+
permission == Permission.DELETE -> (vulnerability.status == VulnerabilityStatus.CREATED || vulnerability.status == VulnerabilityStatus.PENDING_REVIEW) &&
43+
hasFullPermission(vulnerability, authentication)
4344
else -> hasFullPermission(vulnerability, authentication)
4445
}
4546
}

save-cloud-common/src/commonMain/kotlin/com/saveourtool/save/entities/vulnerability/VulnerabilityStatus.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ enum class VulnerabilityStatus {
2020
*/
2121
AUTO_APPROVED,
2222

23+
/**
24+
* Created status
25+
*/
26+
CREATED,
27+
2328
/**
2429
* Review status
2530
*/

save-cosv/src/main/kotlin/com/saveourtool/save/cosv/service/VulnerabilityMetadataService.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,9 @@ class VulnerabilityMetadataService(
6363
existedMetadata.updateBy(cosv, cosvFile, isAutoApprove)
6464
}
6565
?: run {
66-
val newMetadata = cosv.toNewMetadata(user, organization, cosvFile, isAutoApprove)
67-
applicationEventPublisher.publishEvent(VulnerabilityMetadataEvent(newMetadata))
68-
newMetadata
66+
cosv.toNewMetadata(user, organization, cosvFile, isAutoApprove)
6967
}
68+
applicationEventPublisher.publishEvent(VulnerabilityMetadataEvent(metadata))
7069

7170
return vulnerabilityMetadataRepository.save(metadata)
7271
}
@@ -103,7 +102,7 @@ class VulnerabilityMetadataService(
103102
user = user,
104103
organization = organization,
105104
language = getLanguage() ?: VulnerabilityLanguage.OTHER,
106-
status = isAutoApprove.toVulnerabilityStatus(),
105+
status = toVulnerabilityStatus(isAutoApprove, true),
107106
latestCosvFile = cosvFile,
108107
)
109108

@@ -162,7 +161,7 @@ class VulnerabilityMetadataService(
162161
severityNum = entry.getSeverityNumber()
163162
modified = entry.modified.toJavaLocalDateTime()
164163
latestCosvFile = cosvFile
165-
status = isAutoApprove.toVulnerabilityStatus()
164+
status = toVulnerabilityStatus(isAutoApprove, false)
166165
}
167166

168167
private fun CosvSchema<*, *, *, *>.getSeverityNumber() =
@@ -172,6 +171,12 @@ class VulnerabilityMetadataService(
172171
getScore(it)
173172
} ?: 0f
174173

175-
private fun Boolean.toVulnerabilityStatus() = if (this) VulnerabilityStatus.AUTO_APPROVED else VulnerabilityStatus.PENDING_REVIEW
174+
private fun toVulnerabilityStatus(isAutoApprove: Boolean, isNew: Boolean) = if (isAutoApprove) {
175+
VulnerabilityStatus.AUTO_APPROVED
176+
} else if (isNew) {
177+
VulnerabilityStatus.CREATED
178+
} else {
179+
VulnerabilityStatus.PENDING_REVIEW
180+
}
176181
}
177182
}

save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityCollectionView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ private fun getFiltersByTab(
325325
setIsOwnerTab(false)
326326
VulnerabilityFilter(
327327
identifierPrefix = "",
328-
statuses = listOf(VulnerabilityStatus.PENDING_REVIEW),
328+
statuses = listOf(VulnerabilityStatus.CREATED, VulnerabilityStatus.PENDING_REVIEW),
329329
)
330330
}
331331
VulnerabilityListTab.OWNER -> {

save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityHeader.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,9 @@ internal val headerMenu: FC<HeaderMenuProps> = FC { props ->
281281
}
282282
}
283283

284-
if (props.permissions.isSuperAdmin && props.vulnerability.metadataDto.status == VulnerabilityStatus.PENDING_REVIEW) {
284+
if (props.permissions.isSuperAdmin && props.vulnerability.metadataDto.status.let {
285+
it == VulnerabilityStatus.CREATED || it == VulnerabilityStatus.PENDING_REVIEW
286+
}) {
285287
buttonBuilder(label = "Approve".t(), classes = "mr-2 btn-sm", style = "success") {
286288
enrollUpdateRequest()
287289
}

0 commit comments

Comments
 (0)