From 9054974f55756fab8cff74d69da26866af58ee91 Mon Sep 17 00:00:00 2001 From: Colin McDonald Date: Fri, 17 Jun 2016 20:47:59 -0400 Subject: [PATCH] Change /user/:id/verifyPassword back to a GET, allow email+username as ids as well --- src/main/java/net/frozenorb/apiv3/APIv3.java | 2 +- src/main/java/net/frozenorb/apiv3/model/User.java | 4 ++++ ...erifyPassword.java => GETUserVerifyPassword.java} | 12 ++++++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) rename src/main/java/net/frozenorb/apiv3/route/users/{POSTUserVerifyPassword.java => GETUserVerifyPassword.java} (67%) 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