From 2c1ee7e8d73963aecd2fb14d319012d8e28e37c1 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Thu, 24 Sep 2020 16:10:26 -0400 Subject: [PATCH] move setFirstAdmin to AuthResource.newLoginSession --- .../src/main/java/bubble/dao/SessionDAO.java | 5 ----- .../java/bubble/dao/account/AccountDAO.java | 2 ++ .../resources/account/AuthResource.java | 22 +++++++++---------- .../account/TrustedAuthResource.java | 2 +- bubble-server/src/main/resources/messages | 2 +- bubble-web | 2 +- 6 files changed, 16 insertions(+), 19 deletions(-) diff --git a/bubble-server/src/main/java/bubble/dao/SessionDAO.java b/bubble-server/src/main/java/bubble/dao/SessionDAO.java index 19600753..9f99051a 100644 --- a/bubble-server/src/main/java/bubble/dao/SessionDAO.java +++ b/bubble-server/src/main/java/bubble/dao/SessionDAO.java @@ -17,9 +17,4 @@ public class SessionDAO extends AbstractSessionDAO { @Override protected boolean canStartSession(Account account) { return !account.suspended(); } - @Override public String create(Account account) { - account.setFirstAdmin(account.getUuid().equals(accountDAO.getFirstAdmin().getUuid())); - return super.create(account); - } - } diff --git a/bubble-server/src/main/java/bubble/dao/account/AccountDAO.java b/bubble-server/src/main/java/bubble/dao/account/AccountDAO.java index ed2f2ea3..45746fe0 100644 --- a/bubble-server/src/main/java/bubble/dao/account/AccountDAO.java +++ b/bubble-server/src/main/java/bubble/dao/account/AccountDAO.java @@ -470,6 +470,8 @@ public class AccountDAO extends AbstractCRUDDAO implements SqlViewSearc private final Refreshable firstAdmin = new Refreshable<>("firstAdmin", FIRST_ADMIN_CACHE_MILLIS, this::findFirstAdmin); public Account getFirstAdmin() { return firstAdmin.get(); } + public boolean isFirstAdmin(Account account) { return getFirstAdmin().getUuid().equals(account.getUuid()); } + public Account findFirstAdmin() { final List admins = findByField("admin", true); if (admins.isEmpty()) return null; diff --git a/bubble-server/src/main/java/bubble/resources/account/AuthResource.java b/bubble-server/src/main/java/bubble/resources/account/AuthResource.java index d1092d89..c05de6e9 100644 --- a/bubble-server/src/main/java/bubble/resources/account/AuthResource.java +++ b/bubble-server/src/main/java/bubble/resources/account/AuthResource.java @@ -113,11 +113,13 @@ public class AuthResource { return accountDAO.update(account.setLastLogin()); } - public String newLoginSession(Account account) { return newLoginSession(account, accountDAO, sessionDAO); } + public Account newLoginSession(Account account) { return newLoginSession(account, accountDAO, sessionDAO); } - public static String newLoginSession(Account account, AccountDAO accountDAO, SessionDAO sessionDAO) { - if (account.getLastLogin() == null) account.setFirstLogin(true); - return sessionDAO.create(updateLastLogin(account, accountDAO)); + public static Account newLoginSession(Account account, AccountDAO accountDAO, SessionDAO sessionDAO) { + return account + .setToken(sessionDAO.create(updateLastLogin(account, accountDAO))) + .setFirstLogin(account.getLastLogin() == null ? true : null) + .setFirstAdmin(accountDAO.isFirstAdmin(account)); } @GET @Path(EP_CONFIGS) @@ -175,7 +177,7 @@ public class AuthResource { final Account account = accountDAO.create(new Account(request).setRemoteHost(getRemoteHost(req))); activationService.bootstrapThisNode(account, request); - return ok(account.setToken(newLoginSession(account))); + return ok(newLoginSession(account)); } @Autowired private NotificationService notificationService; @@ -344,10 +346,9 @@ public class AuthResource { } } account.getAccountInitializer().setCanSendAccountMessages(); - return ok(account + return ok(newLoginSession(account .waitForAccountInit() - .setPromoError(promoEx == null ? null : promoEx.getMessageTemplate()) - .setToken(newLoginSession(account))); + .setPromoError(promoEx == null ? null : promoEx.getMessageTemplate()))); } @POST @Path(EP_LOGIN) @@ -419,8 +420,7 @@ public class AuthResource { } } - if (!account.hasToken()) account.setToken(newLoginSession(account)); - return ok(account); + return ok(account.hasToken() ? account : newLoginSession(account)); } @POST @Path(EP_APP_LOGIN+"/{session}") @@ -610,7 +610,7 @@ public class AuthResource { if (approval.getMessageType() == AccountMessageType.confirmation) { if (account == null) return invalid("err.approvalToken.invalid"); if (approval.getAction() == AccountAction.login || approval.getAction() == AccountAction.password) { - return ok(account.setToken(newLoginSession(account))); + return ok(newLoginSession(account)); } else { return ok_empty(); } diff --git a/bubble-server/src/main/java/bubble/resources/account/TrustedAuthResource.java b/bubble-server/src/main/java/bubble/resources/account/TrustedAuthResource.java index d04347ea..219149c0 100644 --- a/bubble-server/src/main/java/bubble/resources/account/TrustedAuthResource.java +++ b/bubble-server/src/main/java/bubble/resources/account/TrustedAuthResource.java @@ -84,7 +84,7 @@ public class TrustedAuthResource { final TrustedClient trusted = findTrustedClient(account, request); log.info("loginTrustedClient: logging in trusted: "+account.getName()); - return ok(account.setToken(newLoginSession(account, accountDAO, sessionDAO))); + return ok(newLoginSession(account, accountDAO, sessionDAO)); } @DELETE @Path(EP_DELETE+"/{device}") diff --git a/bubble-server/src/main/resources/messages b/bubble-server/src/main/resources/messages index 85fdd6f7..3b532dc0 160000 --- a/bubble-server/src/main/resources/messages +++ b/bubble-server/src/main/resources/messages @@ -1 +1 @@ -Subproject commit 85fdd6f72a2434ecfe75883ae14cd0ea000bbf22 +Subproject commit 3b532dc0f4956aeff74d0b178f2cf4a43fea29ef diff --git a/bubble-web b/bubble-web index 36279fd8..91356f88 160000 --- a/bubble-web +++ b/bubble-web @@ -1 +1 @@ -Subproject commit 36279fd83f9653c93dceac4ec7029eb416271c10 +Subproject commit 91356f88665fd5b383f4cc078482fd24e7ba55ba