[Feature]: Spieler bannen #15
4 changed files with 43 additions and 4 deletions
19
api/api.yml
19
api/api.yml
|
@ -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"
|
||||
|
||||
/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"
|
||||
snoweuph
commented
404 wenn spieler nicht gefunden 404 wenn spieler nicht gefunden
|
||||
500:
|
||||
|
|
|
@ -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;
|
||||
snoweuph
commented
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) {
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
snoweuph
commented
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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue
ihr habt beim /admin/players endpunkt kein 401, 500 und 503 mehr. sind benötigt