diff --git a/src/main/java/org/openredstone/managers/QueryManager.java b/src/main/java/org/openredstone/managers/QueryManager.java index 8929895..f64fce4 100644 --- a/src/main/java/org/openredstone/managers/QueryManager.java +++ b/src/main/java/org/openredstone/managers/QueryManager.java @@ -87,7 +87,7 @@ public boolean userIsLinkedById(String userId) throws SQLException { } public void createUnlinkedUser(String userId, String ign) throws SQLException { - PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `nu_users` VALUES (?, NULL, ?)"); + PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `nu_users` VALUES (?, NULL, ?) ON DUPLICATE KEY UPDATE `discord_id` = NULL"); preparedStatement.setString(1, userId); preparedStatement.setString(2, ign); preparedStatement.execute(); diff --git a/src/main/java/org/openredstone/managers/TokenManager.java b/src/main/java/org/openredstone/managers/TokenManager.java index dea6e41..eb0afe0 100644 --- a/src/main/java/org/openredstone/managers/TokenManager.java +++ b/src/main/java/org/openredstone/managers/TokenManager.java @@ -22,6 +22,11 @@ public TokenManager(int tokenLength, int lifeSpan) { public String registerTokenToUser(String userId) { String token = generateToken(tokenLength); + if (authenticationTokens.containsValue(userId)) { + String key = authenticationTokens.keySet().stream().filter(e -> authenticationTokens.get(e).equals(userId)).findFirst().get(); + authenticationTokens.remove(key); + tokenLifespans.remove(key); + } authenticationTokens.put(token, userId); tokenLifespans.put(token, System.currentTimeMillis() / 1000L); return token;