[Feature]: Spieler bannen #15

Open
SZUT-Dorian wants to merge 3 commits from TD-4_Admin_kann_spieler_bannen into trunk
4 changed files with 43 additions and 4 deletions
Showing only changes of commit 898ed33e6a - Show all commits
api
src/main/java/de/towerdefence/server

View file

@ -95,6 +95,8 @@ components:
properties:
username:
type: string
id:
type: integer
required:
- username
#############################################
@ -259,6 +261,23 @@ paths:
type: array
items:
$ref: "#/components/schemas/AdministratablePlayer"
Review

ihr habt beim /admin/players endpunkt kein 401, 500 und 503 mehr. sind benötigt

ihr habt beim /admin/players endpunkt kein 401, 500 und 503 mehr. sind benötigt
/admin/player/{id}/ban:
parameters:
- in: path
name: id
schema:
type: integer
format: int64
required: true
post:
operationId: "BanPlayer"
tags:
- admin
summary: "Ban player by id"
description: "Bans a player by id, making them unable to play the game."
responses:
200:
description: "Successfully banned player!"
401:
$ref: "#/components/responses/401Unauthorized"
Review

404 wenn spieler nicht gefunden

404 wenn spieler nicht gefunden
500:

View file

@ -8,6 +8,7 @@ import de.towerdefence.server.oas.models.AdministratablePlayer;
import de.towerdefence.server.oas.models.PlayerFilter;
import de.towerdefence.server.player.Player;
import de.towerdefence.server.player.PlayerRepository;
import de.towerdefence.server.player.PlayerService;
import de.towerdefence.server.utils.OrderToDirectionMapperService;
import de.towerdefence.server.utils.PlayerMapperService;
import jakarta.servlet.http.HttpServletRequest;
@ -36,6 +37,9 @@ public class AdminApiController implements AdminApi {
@Autowired
PlayerMapperService playerMapperService;
@Autowired
PlayerService playerService;
@Autowired
OrderToDirectionMapperService orderToDirectionMapperService;
@ -57,6 +61,12 @@ public class AdminApiController implements AdminApi {
return ResponseEntity.ok(authInfo);
}
@Override
public ResponseEntity<Void> banPlayer(Long id) {
this.playerService.banPlayer(id);
return null;
Review

ist null hier richtig? wollen wir nicht ein 200 zurückgeben?

ist null hier richtig? wollen wir nicht ein 200 zurückgeben?
}
@Override
public ResponseEntity<List<AdministratablePlayer>> getAllPlayers(PlayerFilter body) {

View file

@ -2,11 +2,9 @@ package de.towerdefence.server.player;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Setter;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.*;
import jakarta.persistence.*;
import org.hibernate.annotations.ColumnDefault;
@NoArgsConstructor
@AllArgsConstructor
@ -33,4 +31,8 @@ public class Player {
@NotNull
@Size(min = PASSWORD_SALT_BYTE_LENGTH, max = PASSWORD_SALT_BYTE_LENGTH)
private byte[] passwordSalt;
@NotNull
@ColumnDefault("false")
private boolean banned;
}

View file

@ -1,5 +1,6 @@
package de.towerdefence.server.player;
import de.towerdefence.server.oas.models.AdministratablePlayer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -49,4 +50,11 @@ public class PlayerService {
md.update(salt);
return md.digest(password);
}
public void banPlayer(Long id) {
Review

Wenn der Spieler nicht existiert, sollte diese Funktion einen PlayerNotFound Exception schmeißen

Wenn der Spieler nicht existiert, sollte diese Funktion einen PlayerNotFound Exception schmeißen
this.playerRepository.findById(id).ifPresent(player -> {
player.setBanned(true);
this.playerRepository.saveAndFlush(player);
});
}
}