diff --git a/src/main/java/net/frozenorb/apiv3/web/route/servers/POSTServersHeartbeat.java b/src/main/java/net/frozenorb/apiv3/web/route/servers/POSTServersHeartbeat.java index 79747f3..9c1aa0f 100644 --- a/src/main/java/net/frozenorb/apiv3/web/route/servers/POSTServersHeartbeat.java +++ b/src/main/java/net/frozenorb/apiv3/web/route/servers/POSTServersHeartbeat.java @@ -36,7 +36,7 @@ public final class POSTServersHeartbeat implements Handler { public void handle(RoutingContext ctx) { Actor actor = ctx.get("actor"); - if (actor.getType().isServer()) { + if (!actor.getType().isServer()) { ErrorUtils.respondOther(ctx, 403, "This action can only be performed when requested by a server.", "serverOnly", ImmutableMap.of()); return; } @@ -49,7 +49,7 @@ public final class POSTServersHeartbeat implements Handler { CompositeFuture.all( createInfoResponse(actorServer, requestBody.getDouble("lastTps"), playerNames), - createPlayerResponse(actorServer, playerNames, playerIps), + createPlayerResponse(actor, actorServer, playerNames, playerIps), createPermissionsResponse(ServerGroup.findById(actorServer.getServerGroup())), createEventsResponse(actorServer, requestBody.getJsonArray("events")) ).setHandler((result) -> { @@ -82,7 +82,7 @@ public final class POSTServersHeartbeat implements Handler { return callback; } - private Future> createPlayerResponse(Server server, Map playerNames, Map playerIps) { + private Future> createPlayerResponse(Actor actor, Server server, Map playerNames, Map playerIps) { Future> callback = Future.future(); Future> userLookupCallback = Future.future(); @@ -114,7 +114,7 @@ public final class POSTServersHeartbeat implements Handler { users.forEach((uuid, user) -> { Future> loginInfoFuture = Future.future(); - createLoginInfo(user, server, grants.get(uuid), punishments.get(uuid), prefixGrants.get(uuid), loginInfoFuture); + createLoginInfo(actor, user, server, grants.get(uuid), punishments.get(uuid), prefixGrants.get(uuid), loginInfoFuture); loginInfoFutures.put(uuid, loginInfoFuture); }); @@ -236,8 +236,9 @@ public final class POSTServersHeartbeat implements Handler { return result; } - private void createLoginInfo(User user, Server server, List grants, List punishments, List prefixGrants, Future> callback) { - if (user.seenOnServer(server)) { + private void createLoginInfo(Actor actor, User user, Server server, List grants, List punishments, List prefixGrants, Future> callback) { + + if (actor.getType() == ActorType.SERVER && user.seenOnServer(server)) { user.save((ignored, error) -> { if (error != null) { callback.fail(error); diff --git a/src/main/java/net/frozenorb/apiv3/web/route/users/POSTUsersIdLogin.java b/src/main/java/net/frozenorb/apiv3/web/route/users/POSTUsersIdLogin.java index 05c0780..1f3998f 100644 --- a/src/main/java/net/frozenorb/apiv3/web/route/users/POSTUsersIdLogin.java +++ b/src/main/java/net/frozenorb/apiv3/web/route/users/POSTUsersIdLogin.java @@ -63,8 +63,10 @@ public final class POSTUsersIdLogin implements Handler { ErrorUtils.respondInternalError(ctx, updateUsernameError); return; } + if(actor.getType() == ActorType.SERVER) { + user.seenOnServer(actorServer); + } - user.seenOnServer(actorServer); user.save((ignored3, saveUserError) -> { if (saveUserError != null) { ErrorUtils.respondInternalError(ctx, saveUserError);