Add changepassword to Bungee Hook

This commit is contained in:
Xephi 2015-12-23 12:48:00 +01:00
parent 1d21333c94
commit 57a22c101b
2 changed files with 30 additions and 2 deletions

View File

@ -47,7 +47,7 @@ public class BungeeCordMessage implements PluginMessageListener {
}
if (subChannel.equalsIgnoreCase("AuthMe")) {
String str = in.readUTF();
String[] args = str.split(";");
final String[] args = str.split(";");
final String act = args[0];
final String name = args[1];
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@ -71,6 +71,14 @@ public class BungeeCordMessage implements PluginMessageListener {
ConsoleLogger.info("Player " + auth.getNickname()
+ " has registered out from one of your server!");
}
else if ("changepassword".equals(act)) {
final String password = args[2];
auth.setHash(password);
if (args.length == 4)
auth.setSalt(args[3]);
PlayerCache.getInstance().updatePlayer(auth);
plugin.database.updatePassword(auth);
}
}
});

View File

@ -10,6 +10,9 @@ import fr.xephi.authme.output.Messages;
import fr.xephi.authme.settings.Settings;
import org.bukkit.entity.Player;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import java.security.NoSuchAlgorithmException;
/**
@ -40,7 +43,7 @@ public class ChangePasswordTask implements Runnable {
public void run() {
Messages m = plugin.getMessages();
try {
String name = player.getName().toLowerCase();
final String name = player.getName().toLowerCase();
String hashNew = PasswordSecurity.getHash(Settings.getPasswordHash, newPassword, name);
PlayerAuth auth = PlayerCache.getInstance().getAuth(name);
if (PasswordSecurity.comparePasswordWithHash(oldPassword, auth.getHash(), player.getName())) {
@ -58,6 +61,23 @@ public class ChangePasswordTask implements Runnable {
PlayerCache.getInstance().updatePlayer(auth);
m.send(player, MessageKey.PASSWORD_CHANGED_SUCCESS);
ConsoleLogger.info(player.getName() + " changed his password");
if (Settings.bungee)
{
final String hash = auth.getHash();
final String salt = auth.getSalt();
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable(){
@Override
public void run() {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Forward");
out.writeUTF("ALL");
out.writeUTF("AuthMe");
out.writeUTF("changepassword;" + name + ";" + hash + ";" + salt);
player.sendPluginMessage(plugin, "BungeeCord", out.toByteArray());
}
});
}
} else {
m.send(player, MessageKey.WRONG_PASSWORD);
}