Skip to content

Commit 7191c16

Browse files
committed
Implement player data deletion
1 parent 061fc88 commit 7191c16

2 files changed

Lines changed: 26 additions & 6 deletions

File tree

src/main/java/me/lucko/luckperms/extension/rest/controller/UserController.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,21 @@ record UpdateReq(@JsonProperty(required = true) String username) { }
189189
@Override
190190
public void delete(Context ctx) throws JsonProcessingException {
191191
UUID uniqueId = pathParamAsUuid(ctx);
192-
CompletableFuture<Void> future = this.userManager.loadUser(uniqueId).thenCompose(user -> {
193-
user.data().clear();
194-
return this.userManager.saveUser(user).thenRun(() -> {
195-
this.messagingService.pushUserUpdate(user);
192+
boolean playerDataOnly = ctx.queryParamAsClass("playerDataOnly", Boolean.class).getOrDefault(false);
193+
194+
CompletableFuture<Void> future;
195+
if (playerDataOnly) {
196+
future = this.userManager.deletePlayerData(uniqueId);
197+
} else {
198+
future = this.userManager.loadUser(uniqueId).thenCompose(user -> {
199+
user.data().clear();
200+
return this.userManager.saveUser(user).thenCompose(ignored -> {
201+
this.messagingService.pushUserUpdate(user);
202+
return this.userManager.deletePlayerData(uniqueId);
203+
});
196204
});
197-
});
205+
}
206+
198207
ctx.future(future, result -> ctx.result("ok"));
199208
}
200209

@@ -240,14 +249,18 @@ public void nodesDeleteAll(Context ctx) throws JsonProcessingException {
240249
? null
241250
: this.objectMapper.readValue(ctx.body(), new TypeReference<>(){});
242251

243-
CompletableFuture<?> future = this.userManager.modifyUser(uniqueId, user -> {
252+
CompletableFuture<?> future = this.userManager.loadUser(uniqueId).thenCompose(user -> {
244253
if (nodes == null) {
245254
user.data().clear();
246255
} else {
247256
for (Node node : nodes) {
248257
user.data().remove(node);
249258
}
250259
}
260+
return this.userManager.saveUser(user).thenApply(v -> {
261+
this.messagingService.pushUserUpdate(user);
262+
return user.getNodes();
263+
});
251264
});
252265
ctx.future(future, result -> ctx.result("ok"));
253266
}

src/main/resources/luckperms-openapi.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,13 @@ paths:
287287
'404':
288288
description: User doesn't exist
289289
description: Delete a user
290+
parameters:
291+
- schema:
292+
type: boolean
293+
in: query
294+
name: playerDataOnly
295+
description: if only player data should be deleted
296+
required: false
290297
tags:
291298
- Users
292299
'/user/{uniqueId}/nodes':

0 commit comments

Comments
 (0)