Skip to content

Commit 3816995

Browse files
committed
Merge branch 'dev' into prod
2 parents 07cf37d + 1447d4a commit 3816995

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

platform_api/src/main/java/net/modfest/platform/controller/EventController.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@ public EventData getEvent(@PathVariable String id) {
5050

5151
@PutMapping("/event/{id}/registrations/{userId}")
5252
public UserData register(@PathVariable String id, @PathVariable String userId) {
53-
return setRegistration(id, userId, true);
53+
var data = setRegistration(id, userId, true);
54+
return userController.filterSensitiveUserData(data);
5455
}
5556

5657
@DeleteMapping("/event/{id}/registrations/{userId}")
5758
public UserData unregister(@PathVariable String id, @PathVariable String userId) {
58-
return setRegistration(id, userId, false);
59+
var data = setRegistration(id, userId, false);
60+
return userController.filterSensitiveUserData(data);
5961
}
6062

6163
private UserData setRegistration(@PathVariable String id, @RequestBody String userId, boolean registered) {

platform_api/src/main/java/net/modfest/platform/controller/UserController.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class UserController {
4040
@GetMapping("/users")
4141
@RequiresPermissions(Permissions.Users.LIST_ALL)
4242
public Collection<UserData> listAll() {
43-
return service.getAll();
43+
return service.getAll().stream().map(this::filterSensitiveUserData).toList();
4444
}
4545

4646
@GetMapping(value = "/users/subscribe", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
@@ -84,7 +84,7 @@ public ResponseEntity<SseEmitter> subscribeUserChanges() {
8484
public UserData createUser(@RequestBody UserCreateData data) throws PlatformStandardException {
8585
try {
8686
var id = service.create(data);
87-
return service.getByMfId(id);
87+
return filterSensitiveUserData(service.getByMfId(id));
8888
} catch (UserService.InvalidModrinthIdException e) {
8989
throw new ResponseStatusException(
9090
HttpStatus.BAD_REQUEST,
@@ -94,6 +94,11 @@ public UserData createUser(@RequestBody UserCreateData data) throws PlatformStan
9494
}
9595

9696
@GetMapping("/user/{id}")
97+
public UserData getSingleUserRoute(@PathVariable String id) {
98+
var user = getSingleUser(id);
99+
return filterSensitiveUserData(user);
100+
}
101+
97102
public UserData getSingleUser(@PathVariable String id) {
98103
if (Objects.equals(id, "@me")) {
99104
var principal = SecurityUtils.getSubject().getPrincipal();
@@ -168,7 +173,7 @@ public UserData editUserData(@PathVariable String id, @RequestBody UserPatchData
168173
}
169174

170175
service.save(newUser);
171-
return newUser;
176+
return filterSensitiveUserData(newUser);
172177
}
173178

174179
@PutMapping("/user/{id}/minecraft/{username}")
@@ -219,6 +224,21 @@ public UserData forceUpdateUser(@RequestBody UserData data) {
219224
}
220225

221226
service.save(data);
227+
return filterSensitiveUserData(data);
228+
}
229+
230+
/**
231+
* Removes any data the user does not have access to
232+
*/
233+
public UserData filterSensitiveUserData(UserData data) {
234+
var subject = SecurityUtils.getSubject();
235+
var owns = PermissionUtils.owns(subject, data);
236+
var view_mc = subject.isPermitted(Permissions.Users.VIEW_MINECRAFT);
237+
238+
if (!owns && !view_mc) {
239+
data = data.withMinecraftAccounts(null);
240+
}
241+
222242
return data;
223243
}
224244
}

platform_api/src/main/java/net/modfest/platform/security/PermissionGroup.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public enum PermissionGroup {
1212
TEAM_MEMBERS(UNPRIVILEGED_USERS, Set.of(
1313
Permissions.Meta.RELOAD,
1414
Permissions.Users.LIST_ALL,
15+
Permissions.Users.VIEW_MINECRAFT,
1516
Permissions.Users.EDIT_OTHERS,
1617
Permissions.Users.FORCE_EDIT,
1718
Permissions.Event.BYPASS_REGISTRATIONS,
@@ -39,7 +40,8 @@ public enum PermissionGroup {
3940
* Permissions given when the minecraft server logs in
4041
*/
4142
EVENT_MC_SERVER(null, Set.of(
42-
Permissions.Users.LIST_ALL
43+
Permissions.Users.LIST_ALL,
44+
Permissions.Users.VIEW_MINECRAFT
4345
));
4446

4547
public final @Nullable PermissionGroup parent;

platform_api/src/main/java/net/modfest/platform/security/Permissions.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ public static class Meta {
1414

1515
public static class Users {
1616
public static final String LIST_ALL = "users.list";
17+
/**
18+
* Allows the user to view other's their minecraft accounts
19+
*/
20+
public static final String VIEW_MINECRAFT = "users.view_mc";
1721
/**
1822
* Allows the user to edit all other users their data
1923
*/

0 commit comments

Comments
 (0)