[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:
|
properties:
|
||||||
username:
|
username:
|
||||||
type: string
|
type: string
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
required:
|
required:
|
||||||
- username
|
- username
|
||||||
#############################################
|
#############################################
|
||||||
|
@ -259,6 +261,23 @@ paths:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: "#/components/schemas/AdministratablePlayer"
|
$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:
|
401:
|
||||||
$ref: "#/components/responses/401Unauthorized"
|
$ref: "#/components/responses/401Unauthorized"
|
||||||
snoweuph
commented
404 wenn spieler nicht gefunden 404 wenn spieler nicht gefunden
|
|||||||
500:
|
500:
|
||||||
|
|
|
@ -8,6 +8,7 @@ import de.towerdefence.server.oas.models.AdministratablePlayer;
|
||||||
import de.towerdefence.server.oas.models.PlayerFilter;
|
import de.towerdefence.server.oas.models.PlayerFilter;
|
||||||
import de.towerdefence.server.player.Player;
|
import de.towerdefence.server.player.Player;
|
||||||
import de.towerdefence.server.player.PlayerRepository;
|
import de.towerdefence.server.player.PlayerRepository;
|
||||||
|
import de.towerdefence.server.player.PlayerService;
|
||||||
import de.towerdefence.server.utils.OrderToDirectionMapperService;
|
import de.towerdefence.server.utils.OrderToDirectionMapperService;
|
||||||
import de.towerdefence.server.utils.PlayerMapperService;
|
import de.towerdefence.server.utils.PlayerMapperService;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
@ -36,6 +37,9 @@ public class AdminApiController implements AdminApi {
|
||||||
@Autowired
|
@Autowired
|
||||||
PlayerMapperService playerMapperService;
|
PlayerMapperService playerMapperService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
PlayerService playerService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
OrderToDirectionMapperService orderToDirectionMapperService;
|
OrderToDirectionMapperService orderToDirectionMapperService;
|
||||||
|
|
||||||
|
@ -57,6 +61,12 @@ public class AdminApiController implements AdminApi {
|
||||||
return ResponseEntity.ok(authInfo);
|
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
|
@Override
|
||||||
public ResponseEntity<List<AdministratablePlayer>> getAllPlayers(PlayerFilter body) {
|
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.NotNull;
|
||||||
import jakarta.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
import lombok.Setter;
|
import lombok.*;
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
|
import org.hibernate.annotations.ColumnDefault;
|
||||||
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@ -33,4 +31,8 @@ public class Player {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Size(min = PASSWORD_SALT_BYTE_LENGTH, max = PASSWORD_SALT_BYTE_LENGTH)
|
@Size(min = PASSWORD_SALT_BYTE_LENGTH, max = PASSWORD_SALT_BYTE_LENGTH)
|
||||||
private byte[] passwordSalt;
|
private byte[] passwordSalt;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@ColumnDefault("false")
|
||||||
|
private boolean banned;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package de.towerdefence.server.player;
|
package de.towerdefence.server.player;
|
||||||
|
|
||||||
|
import de.towerdefence.server.oas.models.AdministratablePlayer;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -49,4 +50,11 @@ public class PlayerService {
|
||||||
md.update(salt);
|
md.update(salt);
|
||||||
return md.digest(password);
|
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