diff --git a/src/main/java/net/frozenorb/apiv3/APIv3.java b/src/main/java/net/frozenorb/apiv3/APIv3.java index 9f205e0..767360a 100644 --- a/src/main/java/net/frozenorb/apiv3/APIv3.java +++ b/src/main/java/net/frozenorb/apiv3/APIv3.java @@ -304,7 +304,7 @@ public final class APIv3 extends AbstractVerticle { mainRouter.get("/user/:id/meta/:serverGroup").blockingHandler(new GETUserMeta(), false); mainRouter.get("/user/:id/permissions").blockingHandler(new GETUserPermissions(), false); mainRouter.get("/user/:id/requiresTOTP").blockingHandler(new GETUserRequiresTOTP(), false); - mainRouter.post("/user/:id/verifyPassword").blockingHandler(new POSTUserVerifyPassword(), false); + mainRouter.get("/user/:id/verifyPassword").blockingHandler(new GETUserVerifyPassword(), false); mainRouter.post("/user/confirmRegister/:emailToken").blockingHandler(new POSTUserConfirmRegister(), false); mainRouter.post("/user/:id/leave").handler(new POSTUserLeave()); mainRouter.post("/user/:id/login").blockingHandler(new POSTUserLogin()); diff --git a/src/main/java/net/frozenorb/apiv3/model/User.java b/src/main/java/net/frozenorb/apiv3/model/User.java index 12bde14..f34e1fc 100644 --- a/src/main/java/net/frozenorb/apiv3/model/User.java +++ b/src/main/java/net/frozenorb/apiv3/model/User.java @@ -70,6 +70,10 @@ public final class User { } } + public static User findByEmailSync(String email) { + return SyncUtils.blockOne(usersCollection.find(new Document("email", email))); + } + public static User findByEmailTokenSync(String emailToken) { return SyncUtils.blockOne(usersCollection.find(new Document("emailToken", emailToken))); } diff --git a/src/main/java/net/frozenorb/apiv3/route/users/POSTUserVerifyPassword.java b/src/main/java/net/frozenorb/apiv3/route/users/GETUserVerifyPassword.java similarity index 67% rename from src/main/java/net/frozenorb/apiv3/route/users/POSTUserVerifyPassword.java rename to src/main/java/net/frozenorb/apiv3/route/users/GETUserVerifyPassword.java index a609762..e365042 100644 --- a/src/main/java/net/frozenorb/apiv3/route/users/POSTUserVerifyPassword.java +++ b/src/main/java/net/frozenorb/apiv3/route/users/GETUserVerifyPassword.java @@ -7,11 +7,19 @@ import net.frozenorb.apiv3.APIv3; import net.frozenorb.apiv3.model.User; import net.frozenorb.apiv3.util.ErrorUtils; -public final class POSTUserVerifyPassword implements Handler { +public final class GETUserVerifyPassword implements Handler { public void handle(RoutingContext ctx) { User user = User.findByIdSync(ctx.request().getParam("id")); + if (user == null) { + user = User.findByLastUsernameSync(ctx.request().getParam("id")); + } + + if (user == null) { + user = User.findByEmailSync(ctx.request().getParam("id")); + } + if (user == null) { ErrorUtils.respondNotFound(ctx, "User", ctx.request().getParam("id")); return; @@ -22,7 +30,7 @@ public final class POSTUserVerifyPassword implements Handler { return; } - boolean authorized = user.checkPassword(ctx.getBodyAsJson().getString("password")); + boolean authorized = user.checkPassword(ctx.request().getParam("password")); APIv3.respondJson(ctx, ImmutableMap.of( "authorized", authorized