Skip to content

Commit 7a7e833

Browse files
authored
Split FrontendRoutes on two enums (#2866)
* Split FrontendRoutes on two enums
1 parent 325aef9 commit 7a7e833

38 files changed

Lines changed: 197 additions & 164 deletions

File tree

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/**
2+
* Names that are used as endpoints in the frontend.
3+
* If you create a new view with new URL - add it here.
4+
*/
5+
6+
package com.saveourtool.save.validation
7+
8+
import com.saveourtool.save.utils.URL_PATH_DELIMITER
9+
import kotlin.js.JsExport
10+
11+
/**
12+
* @property path substring of url that defines given route
13+
*/
14+
@JsExport
15+
enum class FrontendCosvRoutes(val path: String) {
16+
ABOUT_US("about"),
17+
BAN("ban"),
18+
COOKIE("cookie"),
19+
ERROR_404("404"),
20+
MANAGE_ORGANIZATIONS("organizations"),
21+
NOT_FOUND("not-found"),
22+
PROFILE("profile"),
23+
REGISTRATION("registration"),
24+
SETTINGS_DELETE("$SETTINGS/delete"),
25+
SETTINGS_EMAIL("$SETTINGS/email"),
26+
SETTINGS_ORGANIZATIONS("$SETTINGS/organizations"),
27+
SETTINGS_PROFILE("$SETTINGS/profile"),
28+
SETTINGS_TOKEN("$SETTINGS/token"),
29+
TERMS_OF_USE("terms-of-use"),
30+
THANKS_FOR_REGISTRATION("thanks-for-registration"),
31+
VULN("vuln"),
32+
VULNERABILITIES("$VULN/list"),
33+
VULNERABILITY_SINGLE("$VULN/collection"),
34+
VULN_COSV_SCHEMA("$VULN/schema"),
35+
VULN_CREATE("$VULN/create-vulnerability"),
36+
VULN_TOP_RATING("$VULN/top-rating"),
37+
VULN_UPLOAD("$VULN/upload-vulnerability"),
38+
;
39+
40+
override fun toString(): String = path
41+
42+
companion object {
43+
/**
44+
* List of views on which topbar should not be rendered
45+
*/
46+
val noTopBarViewList = arrayOf(
47+
REGISTRATION,
48+
ERROR_404,
49+
TERMS_OF_USE,
50+
THANKS_FOR_REGISTRATION,
51+
)
52+
53+
/**
54+
* Get forbidden words from [FrontendCosvRoutes].
55+
*
56+
* @return list of forbidden words
57+
*/
58+
fun getForbiddenWords() = FrontendCosvRoutes.values()
59+
.map { it.path.split(URL_PATH_DELIMITER) }
60+
.flatten()
61+
.toTypedArray()
62+
}
63+
}

save-cloud-common/src/commonMain/kotlin/com/saveourtool/save/validation/FrontendRoutes.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ enum class FrontendRoutes(val path: String) {
3030
INDEX(""),
3131
MANAGE_ORGANIZATIONS("organizations"),
3232
NOT_FOUND("not-found"),
33+
PROFILE("profile"),
3334
PROJECTS("projects"),
3435
REGISTRATION("registration"),
3536
SANDBOX("sandbox"),
@@ -41,14 +42,6 @@ enum class FrontendRoutes(val path: String) {
4142
SETTINGS_TOKEN("$SETTINGS/token"),
4243
TERMS_OF_USE("terms-of-use"),
4344
THANKS_FOR_REGISTRATION("thanks-for-registration"),
44-
VULN("vuln"),
45-
VULNERABILITIES("$VULN/list"),
46-
VULNERABILITY_SINGLE("$VULN/collection"),
47-
VULN_COSV_SCHEMA("$VULN/schema"),
48-
VULN_CREATE("$VULN/create-vulnerability"),
49-
VULN_PROFILE("$VULN/profile"),
50-
VULN_TOP_RATING("$VULN/top-rating"),
51-
VULN_UPLOAD("$VULN/upload-vulnerability"),
5245
;
5346

5447
override fun toString(): String = path

save-cloud-common/src/commonMain/kotlin/com/saveourtool/save/validation/ValidationUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ private fun String.hasOnlyAlphaNumOrAllowedSpecialSymbols(
9999
allowedSpecialSymbols: Set<Char> = namingAllowedSpecialSymbols
100100
) = all { it.isLetterOrDigit() || allowedSpecialSymbols.contains(it) }
101101

102-
private fun String.containsForbiddenWords() = (FrontendRoutes.getForbiddenWords() + BackendRoutes.getForbiddenWords())
102+
private fun String.containsForbiddenWords() = (FrontendRoutes.getForbiddenWords() + FrontendCosvRoutes.getForbiddenWords() + BackendRoutes.getForbiddenWords())
103103
.any { this == it }
104104

105105
private fun String.isLengthOk(allowedLength: Int) = length <= allowedLength

save-cosv-frontend/src/main/kotlin/com/saveourtool/save/cosv/frontend/components/topbar/TopBarLinks.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
package com.saveourtool.save.cosv.frontend.components.topbar
44

55
import com.saveourtool.save.frontend.common.externals.i18next.useTranslation
6-
import com.saveourtool.save.validation.FrontendRoutes
6+
import com.saveourtool.save.validation.FrontendCosvRoutes
77

88
import react.*
99
import react.dom.html.ReactHTML.a
@@ -27,10 +27,9 @@ val topBarLinks: FC<TopBarLinksProps> = FC { props ->
2727
val (t) = useTranslation("topbar")
2828

2929
val vulnTopbarLinks = sequenceOf(
30-
TopBarLink(hrefAnchor = FrontendRoutes.INDEX.path, text = "Main page".t()),
31-
TopBarLink(hrefAnchor = FrontendRoutes.VULN_CREATE.path, text = "Propose vulnerability".t()),
32-
TopBarLink(hrefAnchor = FrontendRoutes.VULNERABILITIES.path, text = "Vulnerabilities list".t()),
33-
TopBarLink(hrefAnchor = FrontendRoutes.VULN_TOP_RATING.path, text = "Top Rating".t()),
30+
TopBarLink(hrefAnchor = FrontendCosvRoutes.VULN_CREATE.path, text = "Propose vulnerability".t()),
31+
TopBarLink(hrefAnchor = FrontendCosvRoutes.VULNERABILITIES.path, text = "Vulnerabilities list".t()),
32+
TopBarLink(hrefAnchor = FrontendCosvRoutes.VULN_TOP_RATING.path, text = "Top Rating".t()),
3433
)
3534

3635
ul {

save-cosv-frontend/src/main/kotlin/com/saveourtool/save/cosv/frontend/components/topbar/TopBarUrlSplits.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ package com.saveourtool.save.cosv.frontend.components.topbar
44

55
import com.saveourtool.save.frontend.common.utils.TopBarUrl
66
import com.saveourtool.save.utils.URL_PATH_DELIMITER
7-
import com.saveourtool.save.validation.FrontendRoutes
7+
import com.saveourtool.save.validation.FrontendCosvRoutes
88

99
import react.FC
1010
import react.Props
@@ -41,7 +41,7 @@ val topBarUrlSplits: FC<TopBarUrlSplitsProps> = FC { props ->
4141
}
4242
props.location.pathname
4343
// workaround for avoiding invalid routing to /vuln/list/:param from /vuln/collection/vulnName
44-
.replace("${FrontendRoutes.VULNERABILITY_SINGLE}", "${FrontendRoutes.VULNERABILITIES}")
44+
.replace("${FrontendCosvRoutes.VULNERABILITY_SINGLE}", "${FrontendCosvRoutes.VULNERABILITIES}")
4545
.substringBeforeLast("?")
4646
.split(URL_PATH_DELIMITER)
4747
.filterNot { it.isBlank() }

save-cosv-frontend/src/main/kotlin/com/saveourtool/save/cosv/frontend/components/topbar/TopBarUserField.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import com.saveourtool.save.frontend.common.utils.*
1212
import com.saveourtool.save.frontend.common.utils.AVATAR_PROFILE_PLACEHOLDER
1313
import com.saveourtool.save.frontend.common.utils.UserInfoAwareProps
1414
import com.saveourtool.save.frontend.common.utils.isSuperAdmin
15-
import com.saveourtool.save.validation.FrontendRoutes
15+
import com.saveourtool.save.validation.FrontendCosvRoutes
1616

1717
import js.core.jso
1818
import react.*
@@ -105,20 +105,20 @@ val topBarUserField: FC<UserInfoAwareProps> = FC { props ->
105105
props.userInfo?.name?.let { name ->
106106
dropdownEntry(faUser, "Profile".t()) { attrs ->
107107
attrs.onClick = {
108-
navigate(to = "/${FrontendRoutes.VULN_PROFILE}/$name")
108+
navigate(to = "/${FrontendCosvRoutes.PROFILE}/$name")
109109
}
110110
}
111111
dropdownEntry(faCog, "Settings".t()) { attrs ->
112112
attrs.onClick = {
113-
navigate(to = "/${FrontendRoutes.SETTINGS_PROFILE}")
113+
navigate(to = "/${FrontendCosvRoutes.SETTINGS_PROFILE}")
114114
}
115115
}
116116
dropdownEntry(
117117
faCity,
118118
"Manage organizations".t()
119119
) { attrs ->
120120
attrs.onClick = {
121-
navigate(to = "/${FrontendRoutes.SETTINGS_ORGANIZATIONS}")
121+
navigate(to = "/${FrontendCosvRoutes.SETTINGS_ORGANIZATIONS}")
122122
}
123123
}
124124
dropdownEntry(faSignOutAlt, "Log out".t()) { attrs ->

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import com.saveourtool.save.frontend.common.externals.i18next.useTranslation
2323
import com.saveourtool.save.frontend.common.themes.Colors
2424
import com.saveourtool.save.frontend.common.utils.*
2525
import com.saveourtool.save.utils.*
26-
import com.saveourtool.save.validation.FrontendRoutes
26+
import com.saveourtool.save.validation.FrontendCosvRoutes
2727
import com.saveourtool.save.validation.isValidUrl
2828

2929
import com.saveourtool.osv4k.Reference
@@ -105,7 +105,7 @@ val createVulnerabilityView: FC<Props> = FC {
105105
responseHandler = ::responseHandlerWithValidation,
106106
)
107107
if (response.ok) {
108-
navigate(to = "/${FrontendRoutes.VULNERABILITIES}")
108+
navigate(to = "/${FrontendCosvRoutes.VULNERABILITIES}")
109109
} else if (response.isConflict()) {
110110
setConflictErrorMessage(response.unpackMessageOrHttpStatus())
111111
}
@@ -440,7 +440,7 @@ val createVulnerabilityView: FC<Props> = FC {
440440
div {
441441
className = ClassName("invalid-feedback d-block text-center")
442442
markdown(
443-
"Vulnerability associated with this identifier: [${cosv.id}](/${FrontendRoutes.VULNERABILITY_SINGLE}/${cosv.id}) already exists"
443+
"Vulnerability associated with this identifier: [${cosv.id}](/${FrontendCosvRoutes.VULNERABILITY_SINGLE}/${cosv.id}) already exists"
444444
)
445445
}
446446
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import com.saveourtool.save.frontend.common.externals.fontawesome.faTrash
1919
import com.saveourtool.save.frontend.common.externals.i18next.useTranslation
2020
import com.saveourtool.save.frontend.common.utils.*
2121
import com.saveourtool.save.info.UserInfo
22-
import com.saveourtool.save.validation.FrontendRoutes
22+
import com.saveourtool.save.validation.FrontendCosvRoutes
2323

2424
import js.core.jso
2525
import react.*
@@ -56,7 +56,7 @@ internal val headerMenu: FC<HeaderMenuProps> = FC { props ->
5656
loadingHandler = ::loadingHandler,
5757
)
5858
if (response.ok) {
59-
navigate(to = "/${FrontendRoutes.VULNERABILITIES}")
59+
navigate(to = "/${FrontendCosvRoutes.VULNERABILITIES}")
6060
}
6161
}
6262

@@ -82,7 +82,7 @@ internal val headerMenu: FC<HeaderMenuProps> = FC { props ->
8282
loadingHandler = ::loadingHandler,
8383
)
8484
if (response.ok) {
85-
navigate(to = "/${FrontendRoutes.VULNERABILITIES}")
85+
navigate(to = "/${FrontendCosvRoutes.VULNERABILITIES}")
8686
}
8787
}
8888

@@ -108,7 +108,7 @@ internal val headerMenu: FC<HeaderMenuProps> = FC { props ->
108108
loadingHandler = ::loadingHandler,
109109
)
110110
if (response.ok) {
111-
navigate(to = "/${FrontendRoutes.VULNERABILITIES}")
111+
navigate(to = "/${FrontendCosvRoutes.VULNERABILITIES}")
112112
}
113113
}
114114

@@ -122,7 +122,7 @@ internal val headerMenu: FC<HeaderMenuProps> = FC { props ->
122122
loadingHandler = ::loadingHandler,
123123
)
124124
if (response.ok) {
125-
navigate(to = "/${FrontendRoutes.VULNERABILITIES}")
125+
navigate(to = "/${FrontendCosvRoutes.VULNERABILITIES}")
126126
}
127127
}
128128

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import com.saveourtool.save.frontend.common.utils.*
99
import com.saveourtool.save.frontend.common.utils.buttonBuilder
1010
import com.saveourtool.save.frontend.common.utils.useTooltip
1111
import com.saveourtool.save.info.UserInfo
12-
import com.saveourtool.save.validation.FrontendRoutes
12+
import com.saveourtool.save.validation.FrontendCosvRoutes
1313
import com.saveourtool.save.validation.isValidTag
1414

1515
import react.*
@@ -89,7 +89,7 @@ val vulnerabilityTagsComponent: FC<VulnerabilityTagsComponentProps> = FC { props
8989
)
9090
}
9191
} else {
92-
navigate("/${FrontendRoutes.VULNERABILITIES}?tag=$tag")
92+
navigate("/${FrontendCosvRoutes.VULNERABILITIES}?tag=$tag")
9393
}
9494
}
9595
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import com.saveourtool.save.entities.cosv.VulnerabilityExt
1010
import com.saveourtool.save.frontend.TabMenuBar
1111
import com.saveourtool.save.frontend.common.utils.*
1212
import com.saveourtool.save.info.UserInfo
13-
import com.saveourtool.save.validation.FrontendRoutes
13+
import com.saveourtool.save.validation.FrontendCosvRoutes
1414

1515
import js.core.jso
1616
import react.*
@@ -193,7 +193,7 @@ enum class VulnerabilityTab {
193193
companion object : TabMenuBar<VulnerabilityTab> {
194194
override val nameOfTheHeadUrlSection = ""
195195
override val defaultTab: VulnerabilityTab = INFO
196-
override val regexForUrlClassification = "/${FrontendRoutes.VULN_PROFILE}"
196+
override val regexForUrlClassification = "/${FrontendCosvRoutes.PROFILE}"
197197
override fun valueOf(elem: String): VulnerabilityTab = VulnerabilityTab.valueOf(elem)
198198
override fun values(): Array<VulnerabilityTab> = VulnerabilityTab.values()
199199
}

0 commit comments

Comments
 (0)