From ca8942feba42c9f174b4d7e9f2b057a4b7ea2121 Mon Sep 17 00:00:00 2001 From: Dorian Nemec Date: Wed, 12 Mar 2025 13:53:02 +0100 Subject: [PATCH] TD-4: Unban --- api/api.yml | 17 +++++++++++++++++ .../server/admin/AdminApiController.java | 6 ++++++ .../server/player/PlayerService.java | 7 +++++++ .../server/server/ServerApiController.java | 6 +++++- 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/api/api.yml b/api/api.yml index 6910812..08389d1 100644 --- a/api/api.yml +++ b/api/api.yml @@ -282,6 +282,23 @@ paths: responses: 200: description: "Successfully banned player!" + /admin/player/{id}/unban: + parameters: + - in: path + name: id + schema: + type: integer + format: int64 + required: true + post: + operationId: "UnbanPlayer" + tags: + - admin + summary: "Unban player by id" + description: "Unbans a player by id, allowing them to play the game." + responses: + 200: + description: "Successfully unbanned player!" 401: $ref: "#/components/responses/401Unauthorized" 500: diff --git a/src/main/java/de/towerdefence/server/admin/AdminApiController.java b/src/main/java/de/towerdefence/server/admin/AdminApiController.java index 8e3dee5..3191942 100644 --- a/src/main/java/de/towerdefence/server/admin/AdminApiController.java +++ b/src/main/java/de/towerdefence/server/admin/AdminApiController.java @@ -93,4 +93,10 @@ public class AdminApiController implements AdminApi { return ResponseEntity.ok(playersMapped); } + + @Override + public ResponseEntity unbanPlayer(Long id) { + this.playerService.unbanPlayer(id); + return null; + } } diff --git a/src/main/java/de/towerdefence/server/player/PlayerService.java b/src/main/java/de/towerdefence/server/player/PlayerService.java index de7a1c5..fef4e99 100644 --- a/src/main/java/de/towerdefence/server/player/PlayerService.java +++ b/src/main/java/de/towerdefence/server/player/PlayerService.java @@ -57,4 +57,11 @@ public class PlayerService { this.playerRepository.saveAndFlush(player); }); } + + public void unbanPlayer(Long id) { + this.playerRepository.findById(id).ifPresent(player -> { + player.setBanned(false); + this.playerRepository.saveAndFlush(player); + }); + } } diff --git a/src/main/java/de/towerdefence/server/server/ServerApiController.java b/src/main/java/de/towerdefence/server/server/ServerApiController.java index 2dda3e3..3975481 100644 --- a/src/main/java/de/towerdefence/server/server/ServerApiController.java +++ b/src/main/java/de/towerdefence/server/server/ServerApiController.java @@ -45,7 +45,7 @@ public class ServerApiController implements ServerApi { @Override public ResponseEntity playerRegister(PlayerRegistrationData body) { if(playerRepository.existsByUsername(body.getUsername())){ - return new ResponseEntity<>(HttpStatus.CONFLICT); + return new ResponseEntity<>(HttpStatus.FORBIDDEN); } Player newPlayer = new Player(); newPlayer.setUsername(body.getUsername()); @@ -61,6 +61,10 @@ public class ServerApiController implements ServerApi { @Override public ResponseEntity playerLogin(PlayerLoginData body) { Player player = playerRepository.findByUsername(body.getUsername()); + if(player.isBanned()) + { + return new ResponseEntity<>(HttpStatus.CONFLICT); + } if(player == null){ return new ResponseEntity<>(HttpStatus.UNAUTHORIZED); }