Do the same for the password generator

This commit is contained in:
games647
2016-09-11 19:57:27 +02:00
parent 3e9c8e3a7e
commit 9f5f61f1c2
24 changed files with 125 additions and 116 deletions
@@ -1,10 +1,59 @@
package com.github.games647.fastlogin.core;
/**
* Represents a supporting authentication plugin in BungeeCord and Bukkit/Spigot/... servers
*
* @param <T> either org.bukkit.entity.Player for Bukkit or net.md_5.bungee.api.connection.ProxiedPlayer for BungeeCord
*/
public interface AuthPlugin<T> {
/**
* Login the premium (paid account) player after the player joined successfully the server.
*
* <strong>This operation will be performed async while the player successfully
* joined the server.</strong>
*
* @param player the player that needs to be logged in
* @return if the operation was successful
*/
boolean forceLogin(T player);
boolean forceRegister(T player, String password);
/**
* Forces a register in order to protect the paid account.
*
* <strong>This operation will be performed async while the player successfully
* joined the server.</strong>
*
* After a successful registration the player should be logged
* in too.
*
* The method will be called only for premium accounts.
* So it's recommended to set additionally premium property
* if possible.
*
* Background: If we don't register an account, cracked players
* could steal the unregistered account from the paid
* player account
*
* @param player the premium account
* @param password a strong random generated password
* @return if the operation was successful
*/
boolean forceRegister(T player, String password) throws Exception;
/**
* Checks whether an account exists for this player name.
*
* This check should check if a cracked player account exists
* so we can be sure the premium player doesn't steal the account
* of that player.
*
* This operation will be performed async while the player is
* connecting.
*
* @param playerName player name
* @return if the player has an account
* @throws Exception if an error occurred
*/
boolean isRegistered(String playerName) throws Exception;
}
@@ -0,0 +1,20 @@
package com.github.games647.fastlogin.core.shared;
import java.util.Random;
public class DefaultPasswordGenerator<T> implements PasswordGenerator<T> {
private final Random random = new Random();
private static final char[] PASSWORD_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
.toCharArray();
@Override
public String getRandomPassword(T player) {
StringBuilder generatedPassword = new StringBuilder(8);
for (int i = 1; i <= 8; i++) {
generatedPassword.append(PASSWORD_CHARACTERS[random.nextInt(PASSWORD_CHARACTERS.length - 1)]);
}
return generatedPassword.toString();
}
}
@@ -1,5 +1,9 @@
package com.github.games647.fastlogin.core;
package com.github.games647.fastlogin.core.shared;
import com.github.games647.fastlogin.core.AuthPlugin;
import com.github.games647.fastlogin.core.FastLoginCore;
import com.github.games647.fastlogin.core.PlayerProfile;
import com.github.games647.fastlogin.core.SharedConfig;
import java.util.UUID;
import java.util.logging.Level;
@@ -1,4 +1,4 @@
package com.github.games647.fastlogin.core;
package com.github.games647.fastlogin.core.shared;
import java.net.InetSocketAddress;
@@ -0,0 +1,6 @@
package com.github.games647.fastlogin.core.shared;
public interface PasswordGenerator<T> {
String getRandomPassword(T player);
}