From ae3e03405d7a24d5c16a6ef2bb037b795db54f1f Mon Sep 17 00:00:00 2001 From: games647 Date: Fri, 23 Sep 2016 10:42:25 +0200 Subject: [PATCH] No duplicate login's like auth plugins auto logins if it's the same ip --- CHANGELOG.md | 1 + .../games647/fastlogin/bukkit/hooks/AuthMeHook.java | 7 +++++-- .../github/games647/fastlogin/bukkit/hooks/LogItHook.java | 8 +++++++- .../fastlogin/bukkit/hooks/LoginSecurityHook.java | 4 ++++ .../games647/fastlogin/bukkit/hooks/RoyalAuthHook.java | 4 ++++ .../games647/fastlogin/bukkit/hooks/UltraAuthHook.java | 4 ++++ .../github/games647/fastlogin/bukkit/hooks/xAuthHook.java | 4 ++++ 7 files changed, 29 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b1b5cbc..ee843f89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ * Remove deprecated API methods from the last version * Finally set a value to the API column +* No duplicate session login ######1.9 diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/AuthMeHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/AuthMeHook.java index 53c7427c..b1ba697a 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/AuthMeHook.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/AuthMeHook.java @@ -28,8 +28,10 @@ public class AuthMeHook implements AuthPlugin { public boolean forceLogin(Player player) { //skips registration and login if (isNewAPIAvailable) { - NewAPI.getInstance().forceLogin(player); - } else { + if (!NewAPI.getInstance().isAuthenticated(player)) { + NewAPI.getInstance().forceLogin(player); + } + } else if (!API.isAuthenticated(player)) { API.forceLogin(player); } @@ -50,6 +52,7 @@ public class AuthMeHook implements AuthPlugin { @SuppressWarnings("deprecation") public boolean forceRegister(Player player, String password) { if (isNewAPIAvailable) { + //this automatically registers the player too NewAPI.getInstance().forceRegister(player, password); } else { API.registerPlayer(player.getName(), password); diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LogItHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LogItHook.java index 33d3e232..d182cf4f 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LogItHook.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LogItHook.java @@ -5,6 +5,7 @@ import com.github.games647.fastlogin.core.hooks.AuthPlugin; import io.github.lucaseasedup.logit.CancelledState; import io.github.lucaseasedup.logit.LogItCore; import io.github.lucaseasedup.logit.account.Account; +import io.github.lucaseasedup.logit.session.SessionManager; import org.bukkit.entity.Player; @@ -19,7 +20,12 @@ public class LogItHook implements AuthPlugin { @Override public boolean forceLogin(Player player) { - return LogItCore.getInstance().getSessionManager().startSession(player) == CancelledState.NOT_CANCELLED; + SessionManager sessionManager = LogItCore.getInstance().getSessionManager(); + if (sessionManager.isSessionAlive(player)) { + return true; + } + + return sessionManager.startSession(player) == CancelledState.NOT_CANCELLED; } @Override diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LoginSecurityHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LoginSecurityHook.java index 9dc8bf5a..116b4ac9 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LoginSecurityHook.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/LoginSecurityHook.java @@ -24,6 +24,10 @@ public class LoginSecurityHook implements AuthPlugin { @Override public boolean forceLogin(Player player) { PlayerSession session = LoginSecurity.getSessionManager().getPlayerSession(player); + if (session.isAuthorized()) { + return true; + } + return session.performAction(new LoginAction(AuthService.PLUGIN, plugin)).isSuccess(); } diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/RoyalAuthHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/RoyalAuthHook.java index 81050d12..fdd3660d 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/RoyalAuthHook.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/RoyalAuthHook.java @@ -28,6 +28,10 @@ public class RoyalAuthHook implements AuthPlugin { AuthPlayer authPlayer = AuthPlayer.getAuthPlayer(player); Future future = Bukkit.getScheduler().callSyncMethod(royalAuthPlugin, () -> { + if (authPlayer.isLoggedIn()) { + return true; + } + //https://github.com/RoyalDev/RoyalAuth/blob/master/src/main/java/org/royaldev/royalauth/commands/CmdLogin.java#L62 //not thread-safe authPlayer.login(); diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java index f2d3c0d8..d81010b4 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java @@ -28,6 +28,10 @@ public class UltraAuthHook implements AuthPlugin { public boolean forceLogin(Player player) { //not thread-safe Future future = Bukkit.getScheduler().callSyncMethod(ultraAuthPlugin, () -> { + if (UltraAuthAPI.isAuthenticated(player)) { + return true; + } + UltraAuthAPI.authenticatedPlayer(player); return UltraAuthAPI.isAuthenticated(player); }); diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/xAuthHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/xAuthHook.java index 5ddc4b1c..e7862022 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/xAuthHook.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/xAuthHook.java @@ -30,6 +30,10 @@ public class xAuthHook implements AuthPlugin { Future future = Bukkit.getScheduler().callSyncMethod(xAuthPlugin, () -> { xAuthPlayer xAuthPlayer = xAuthPlugin.getPlayerManager().getPlayer(player); if (xAuthPlayer != null) { + if (xAuthPlayer.isAuthenticated()) { + return true; + } + //we checked that the player is premium (paid account) xAuthPlayer.setPremium(true);