diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/ApiPaths.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/ApiPaths.kt index 7d28d9540b85601fd61969fd0e1bf3ceeac60f1d..6e9f2403e5ed972422f759fda3a2ef1dac768553 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/ApiPaths.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/ApiPaths.kt @@ -14,6 +14,8 @@ object ApiPaths { const val RAW_KPI_BY_REPOSITORY_ID = "$BASE/repository/{id}/rawkpi" const val KPI_BY_REPOSITORY_ID = "$BASE/repository/{id}/kpi" + const val GET_ALL_TOOLS = "$BASE/tools" + const val REPOSITORY_ID = "$REPOSITORY/{id}" const val REPOSITORY_TOOLS = "$REPOSITORY/{id}/tools" } diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/security/WebSecurityConfiguration.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/security/WebSecurityConfiguration.kt index 72027ec2c5bb6fd5549644ab63c11d1e14e188a0..686739512879f0244e26d6944ff4e3ca20f625c1 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/security/WebSecurityConfiguration.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/security/WebSecurityConfiguration.kt @@ -17,7 +17,6 @@ import org.springframework.web.cors.CorsConfiguration import org.springframework.web.cors.reactive.CorsWebFilter import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource - const val ADMIN_ROLE: String = "ADMIN" @Configuration @@ -67,6 +66,7 @@ class SecurityConfiguration(val apiKeyFilter: ApiKeyFilter, private val security addFilterAt(apiKeyFilter, SecurityWebFiltersOrder.FIRST) authorizeExchange { authorize(ApiPaths.ACTUATOR, permitAll) + authorize(ApiPaths.GET_ALL_TOOLS, hasRole(ADMIN_ROLE)) authorize(ApiPaths.REPOSITORY, permitAll) authorize(ApiPaths.REPOSITORY_ID, permitAll) authorize(ApiPaths.REPOSITORY_SCORE_CARD, permitAll) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/controller/ToolController.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/controller/ToolController.kt new file mode 100644 index 0000000000000000000000000000000000000000..806527c88bd5bccff9fe8fe0e6575f42987c62ae --- /dev/null +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/controller/ToolController.kt @@ -0,0 +1,16 @@ +package de.fraunhofer.iem.dataprovider.tool.controller + +import de.fraunhofer.iem.dataprovider.configuration.ApiPaths +import de.fraunhofer.iem.dataprovider.tool.dto.ToolEntityResponseDto +import de.fraunhofer.iem.dataprovider.tool.repository.ToolRepository +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.RestController + +@RestController +class ToolController(val toolRepository: ToolRepository) { + + @GetMapping(ApiPaths.GET_ALL_TOOLS) + fun getAllTools(): List<ToolEntityResponseDto> { + return toolRepository.findAll().map { it.toDto() } + } +} diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolEntityResponseDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolEntityResponseDto.kt new file mode 100644 index 0000000000000000000000000000000000000000..4d9e4d1430716839d526c0da7ddcf95689e32880 --- /dev/null +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolEntityResponseDto.kt @@ -0,0 +1,5 @@ +package de.fraunhofer.iem.dataprovider.tool.dto + +import java.util.* + +data class ToolEntityResponseDto(val id: UUID, val name: String, val toolType: String) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/entity/ToolEntity.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/entity/ToolEntity.kt index e6bf25d132241af940dfabc2dbb9988d4f3a2b26..ac6008cdd77a7d999db2fa168705353fc3211f74 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/entity/ToolEntity.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/entity/ToolEntity.kt @@ -1,5 +1,6 @@ package de.fraunhofer.iem.dataprovider.tool.entity +import de.fraunhofer.iem.dataprovider.tool.dto.ToolEntityResponseDto import de.fraunhofer.iem.dataprovider.tool.enumeration.ToolType import jakarta.persistence.* import org.hibernate.Hibernate @@ -20,6 +21,10 @@ class ToolEntity( var toolType: ToolType, ) { + fun toDto(): ToolEntityResponseDto { + return ToolEntityResponseDto(this.id!!, this.name, this.toolType.getName()) + } + override fun equals(other: Any?): Boolean { if (this === other) return true if (other == null || Hibernate.getClass(this) != Hibernate.getClass(other)) return false