diff --git a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/FencerJudgeBackApplication.kt b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/FencerJudgeBackApplication.kt index c0d5fa1..a3ea936 100644 --- a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/FencerJudgeBackApplication.kt +++ b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/FencerJudgeBackApplication.kt @@ -2,8 +2,10 @@ package fr.teamflash.fencerjudgeback import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity @SpringBootApplication +@EnableGlobalMethodSecurity(prePostEnabled = true) class FencerJudgeBackApplication fun main(args: Array) { diff --git a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/MatchRestController.kt b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/MatchRestController.kt index ab2e7de..0d3dc7f 100644 --- a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/MatchRestController.kt +++ b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/MatchRestController.kt @@ -12,10 +12,6 @@ import java.util.Date @RequestMapping("/matches") class MatchRestController(private val matchService: MatchService) { - companion object { - const val URL_ORIGIN: String = "http://localhost:*" - } - // Lister tous les matchs @GetMapping("/") fun getAll(): ResponseEntity?> { diff --git a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/MatchService.kt b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/MatchService.kt index 1e5f24b..d606740 100644 --- a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/MatchService.kt +++ b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/MatchService.kt @@ -5,6 +5,7 @@ import fr.teamflash.fencerjudgeback.repositories.MatchRepository import fr.teamflash.fencerjudgeback.websocket.controllers.MatchWebSocketController import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.annotation.Lazy +import org.springframework.security.access.prepost.PreAuthorize import org.springframework.stereotype.Service @Service @@ -37,6 +38,7 @@ class MatchService( } // Ajouter un match (admin) + @PreAuthorize("hasRole('ADMIN')") fun createMatch(newMatch: MatchBean): MatchBean { println("MatchService.createMatch : $newMatch") val savedMatch = matchRepository.save(newMatch) @@ -47,6 +49,7 @@ class MatchService( } // Modifier un match (admin) + @PreAuthorize("hasRole('ADMIN')") fun updateMatch(id: Long?, newMatch: MatchBean): Int { println("MatchService.updateMatch : $newMatch") @@ -62,6 +65,7 @@ class MatchService( } // Supprimer un match (admin) + @PreAuthorize("hasRole('ADMIN')") fun deleteMatchById(id: Long?) : Int? { println("MatchService.deleteMatchById : $id") @@ -91,8 +95,4 @@ class MatchService( return matchRepository.findAll() .filter { it.country == country } } - - fun addMatch(match:MatchBean) { - matchRepository.save(match) - } } diff --git a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/PlayerService.kt b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/PlayerService.kt index 0443f0e..6c75525 100644 --- a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/PlayerService.kt +++ b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/PlayerService.kt @@ -6,6 +6,7 @@ import fr.teamflash.fencerjudgeback.websocket.controllers.PlayerWebSocketControl import fr.teamflash.fencerjudgeback.websocket.models.PlayerUpdateMessage import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.annotation.Lazy +import org.springframework.security.access.prepost.PreAuthorize import org.springframework.stereotype.Service @Service @@ -49,6 +50,7 @@ class PlayerService( } // Ajouter un joueur (admin) +// @PreAuthorize("hasRole('ADMIN')") fun createPlayer(player: PlayerBean) : PlayerBean { println("PlayerService.createPlayer : $player") val savedPlayer = playerRepository.save(player) @@ -58,6 +60,7 @@ class PlayerService( } // Modifier un joueur (admin) + @PreAuthorize("hasRole('ADMIN')") fun updatePlayer(id:Long, newPlayer: PlayerBean) : Int { // Vérifier si le joueur existe à l'id renseigné if (getById(id) == null) { @@ -74,6 +77,7 @@ class PlayerService( } // Supprimer un joueur (admin) + @PreAuthorize("hasRole('ADMIN')") fun deletePlayerById(id:Long?): Int { println("PlayerService.deletePlayer : $id") @@ -89,8 +93,4 @@ class PlayerService( playerRepository.deleteById(id!!) return 1 } - - fun addPlayer(player:PlayerBean) { - playerRepository.save(player) - } } diff --git a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/RefereeService.kt b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/RefereeService.kt index c3491ed..384f235 100644 --- a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/RefereeService.kt +++ b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/RefereeService.kt @@ -8,6 +8,7 @@ import fr.teamflash.fencerjudgeback.websocket.controllers.RefereeWebSocketContro import fr.teamflash.fencerjudgeback.websocket.models.RefereeUpdateMessage import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.annotation.Lazy +import org.springframework.security.access.prepost.PreAuthorize import org.springframework.stereotype.Service @Service @@ -51,6 +52,7 @@ class RefereeService( } // Ajouter un arbitre (admin) + @PreAuthorize("hasRole('ADMIN')") fun createReferee(referee: RefereeBean) : RefereeBean { println("RefereeService.createReferee : $referee") val savedReferee = refereeRepository.save(referee) @@ -60,6 +62,7 @@ class RefereeService( } // Modifier un arbitre (admin) + @PreAuthorize("hasRole('ADMIN')") fun updateReferee(id:Long, newReferee: RefereeBean) : Int? { // Vérifier si l'arbitre existe à l'id renseigné if (getById(id) == null) { @@ -74,6 +77,7 @@ class RefereeService( } // Supprimer un arbitre (admin) + @PreAuthorize("hasRole('ADMIN')") fun deleteRefereeById(id:Long): Int { println("RefereeService.deleteReferee : $id") diff --git a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/websocket/controllers/MatchWebSocketController.kt b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/websocket/controllers/MatchWebSocketController.kt index bee6a2f..af262da 100644 --- a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/websocket/controllers/MatchWebSocketController.kt +++ b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/websocket/controllers/MatchWebSocketController.kt @@ -109,7 +109,7 @@ class MatchWebSocketController( @MessageMapping("/add") fun addMatchtoMainList(match:MatchBean) { match.id = mainId; - matchService.addMatch(match) + matchService.createMatch(match) messageHistory.add(match) broadcastMatchUpdate(match, MatchUpdateMessage.UpdateType.NEW_MATCH) mainId = mainId?.plus(1) diff --git a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/websocket/controllers/PlayerWebSocketController.kt b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/websocket/controllers/PlayerWebSocketController.kt index 4e31270..e3a402d 100644 --- a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/websocket/controllers/PlayerWebSocketController.kt +++ b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/websocket/controllers/PlayerWebSocketController.kt @@ -19,8 +19,6 @@ class PlayerWebSocketController( private val messagingTemplate: SimpMessagingTemplate ) { - private val messageHistory = ArrayList() - @MessageMapping("/player.update") @SendTo("/topic/player.updates") fun handlePlayerUpdate(playerUpdateMessage: PlayerUpdateMessage): PlayerUpdateMessage { @@ -65,7 +63,7 @@ class PlayerWebSocketController( @MessageMapping fun addPlayerToMainList(playerBean: PlayerBean) { - playerService.addPlayer(playerBean) + playerService.createPlayer(playerBean) broadcastPlayerUpdate(playerBean, PlayerUpdateMessage.UpdateType.PLAYER_CREATE) } } \ No newline at end of file diff --git a/FencerJudgeBack/src/main/resources/static/testMatchWebSocketHTML.html b/FencerJudgeBack/src/main/resources/static/testMatchWebSocketHTML.html index 950f7b6..8f84a9b 100644 --- a/FencerJudgeBack/src/main/resources/static/testMatchWebSocketHTML.html +++ b/FencerJudgeBack/src/main/resources/static/testMatchWebSocketHTML.html @@ -62,10 +62,9 @@ function sendMatch() { const match = { - id: 1, - player1Id: parseInt(document.getElementById("player1Id").value), - player2Id: parseInt(document.getElementById("player2Id").value), - refereeId: parseInt(document.getElementById("refereeId").value), + player1ID: parseInt(document.getElementById("player1Id").value), + player2ID: parseInt(document.getElementById("player2Id").value), + refereeID: parseInt(document.getElementById("refereeId").value), score1: parseInt(document.getElementById("score1").value), score2: parseInt(document.getElementById("score2").value), date: document.getElementById("matchDate").value diff --git a/FencerJudgeBack/src/main/resources/static/testPlayerMatchWebSocketHTML.html b/FencerJudgeBack/src/main/resources/static/testPlayerMatchWebSocketHTML.html deleted file mode 100644 index 15b617a..0000000 --- a/FencerJudgeBack/src/main/resources/static/testPlayerMatchWebSocketHTML.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - Test WebSocket Match - - - - -

Test WebSocket Match

- -
Connexion...
- -
- - - - -
- -
- - - -
- - - - - - - - - - diff --git a/FencerJudgeBack/test.http b/FencerJudgeBack/test.http index 6a6444e..cb46cf3 100644 --- a/FencerJudgeBack/test.http +++ b/FencerJudgeBack/test.http @@ -1,7 +1,7 @@ ### Get all matches GET http://localhost:8080/matches/ -### Get matches by players --> TODO +### Get matches by players GET http://localhost:8080/matches/players/1/2 ### Get matches by date @@ -39,7 +39,7 @@ Content-Type: application/json "score1": 0, "score2": 0, "date": "2025-06-02", - "state": "NOT STARTED" + "state": 0 } ### Update match @@ -57,7 +57,7 @@ Content-Type: application/json "score1": 5, "score2": 3, "date": "2025-06-02", - "state": "OVER" + "state": 1 } ### Delete match @@ -85,7 +85,7 @@ Content-Type: application/json { "name": "Smith", "firstName": "John", - "qualification": "NATIONAL" + "level": 1 } ### Update referee @@ -95,7 +95,7 @@ Content-Type: application/json { "name": "Smith", "firstName": "John", - "qualification": "INTERNATIONAL" + "level": "INTERNATIONAL" } ### Delete referee