From 26fb2ffc64f7f6e4802d43cc57b2607b12056cb9 Mon Sep 17 00:00:00 2001 From: ad1tya2 <74638765+ad1tya2@users.noreply.github.com> Date: Thu, 20 Jan 2022 12:19:10 +0530 Subject: [PATCH] Added a deleteplayer command to delete the account of a player --- pom.xml | 2 +- .../java/ad1tya2/adiauth/Bungee/AdiAuth.java | 1 + .../adiauth/Bungee/commands/deleteplayer.java | 36 +++++++++++++++++ .../adiauth/Bungee/commands/unregister.java | 9 +++-- .../ad1tya2/adiauth/Bungee/data/storage.java | 39 +++++++++++++++++++ 5 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 src/main/java/ad1tya2/adiauth/Bungee/commands/deleteplayer.java diff --git a/pom.xml b/pom.xml index 91f0196..67e1469 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ ad1tya2 AdiAuth - 1.5 + 1.6 jar AdiAuth diff --git a/src/main/java/ad1tya2/adiauth/Bungee/AdiAuth.java b/src/main/java/ad1tya2/adiauth/Bungee/AdiAuth.java index 9b78c11..7fc31a4 100644 --- a/src/main/java/ad1tya2/adiauth/Bungee/AdiAuth.java +++ b/src/main/java/ad1tya2/adiauth/Bungee/AdiAuth.java @@ -58,6 +58,7 @@ public boolean isLoggable(LogRecord record) { getProxy().getPluginManager().registerCommand(this, new converter()); getProxy().getPluginManager().registerCommand(this, new checkuserdata()); getProxy().getPluginManager().registerCommand(this, new changeplayermode()); + getProxy().getPluginManager().registerCommand(this, new deleteplayer()); servers.serversStatusChecker(); } diff --git a/src/main/java/ad1tya2/adiauth/Bungee/commands/deleteplayer.java b/src/main/java/ad1tya2/adiauth/Bungee/commands/deleteplayer.java new file mode 100644 index 0000000..720c8e3 --- /dev/null +++ b/src/main/java/ad1tya2/adiauth/Bungee/commands/deleteplayer.java @@ -0,0 +1,36 @@ +package ad1tya2.adiauth.Bungee.commands; + +import ad1tya2.adiauth.Bungee.UserProfile; +import ad1tya2.adiauth.Bungee.data.storage; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.plugin.Command; + +public class deleteplayer extends Command { + public deleteplayer(){ + super("deleteplayer", "adiauth.admin", "deleteuser"); + } + @Override + public void execute(CommandSender sender, String[] args) { + if(args.length != 1){ + sender.sendMessage(ChatColor.YELLOW+"Please use /deleteplayer "); + return; + } + String username = args[0]; + UserProfile profile = storage.getPlayerMemory(username); + if(profile == null){ + sender.sendMessage(ChatColor.YELLOW+"Player dosent exist"); + } else { + profile.password = null; + profile.endSession(); + ProxiedPlayer p = ProxyServer.getInstance().getPlayer(profile.uuid); + if(p != null){ + p.disconnect(ChatColor.RED+"Your Account has been deleted!"); + } + storage.deletePlayer(profile); + sender.sendMessage("Successfully deleted "+profile.username); + } + } +} diff --git a/src/main/java/ad1tya2/adiauth/Bungee/commands/unregister.java b/src/main/java/ad1tya2/adiauth/Bungee/commands/unregister.java index 40cb3e4..74c2bc5 100644 --- a/src/main/java/ad1tya2/adiauth/Bungee/commands/unregister.java +++ b/src/main/java/ad1tya2/adiauth/Bungee/commands/unregister.java @@ -2,6 +2,7 @@ import ad1tya2.adiauth.Bungee.UserProfile; import ad1tya2.adiauth.Bungee.data.storage; +import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -14,22 +15,22 @@ public unregister(){ @Override public void execute(CommandSender sender, String[] args) { if(args.length != 1){ - sender.sendMessage("&ePlease use /unregister "); + sender.sendMessage(ChatColor.YELLOW+"Please use /unregister "); return; } String username = args[0]; UserProfile profile = storage.getPlayerMemory(username); if(profile == null){ - sender.sendMessage("&ePlayer dosent exist"); + sender.sendMessage(ChatColor.YELLOW+"Player dosent exist"); } else { profile.password = null; profile.endSession(); ProxiedPlayer p = ProxyServer.getInstance().getPlayer(profile.uuid); if(p != null){ - p.disconnect("&cYou have been unregistered!"); + p.disconnect(ChatColor.RED+"You have been unregistered!"); } storage.updatePlayer(profile); - sender.sendMessage("&2Successfully unregistered &b"+username); + sender.sendMessage("Successfully unregistered "+username); } } } diff --git a/src/main/java/ad1tya2/adiauth/Bungee/data/storage.java b/src/main/java/ad1tya2/adiauth/Bungee/data/storage.java index 75b0a16..33a9be1 100644 --- a/src/main/java/ad1tya2/adiauth/Bungee/data/storage.java +++ b/src/main/java/ad1tya2/adiauth/Bungee/data/storage.java @@ -79,6 +79,19 @@ public static void addAccountToIpList(UserProfile profile){ } profilesByIp.put(profile.lastIp, profiles); } + + public static void removeAccountFromIpList(UserProfile profile){ + if(profile.lastIp == null){ + return; + } + List profiles = profilesByIp.get(profile.lastIp); + if(profiles == null){ + profiles = new ArrayList(); + } + profiles.remove(profile); + profilesByIp.put(profile.lastIp, profiles); + } + public static void load(){ try { tools.log("&eLoading Players..."); @@ -287,6 +300,32 @@ public static void updatePlayer(UserProfile player){ asyncUserProfileUpdate(player); } + public static void deletePlayer(UserProfile profile){ + if(profile.discordId!=null) + removePlayerFromDiscord(profile.discordId); + + pMapByPremiumUuid.remove(profile.premiumUuid); + pMap.remove(profile.username); + removeAccountFromIpList(profile); + + AdiAuth.instance.getProxy().getScheduler().runAsync(AdiAuth.instance, new Runnable() { + @Override + public void run() { + try { + Connection conn = database.getConnection(); + PreparedStatement stmt = conn.prepareStatement( + "DELETE FROM auth_users WHERE uuid=?"); + stmt.setString(1, profile.uuid.toString()); + stmt.executeUpdate(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + }); + } + public static UserProfile getPlayerByDiscord(String discordId){ return pMapByDiscord.get(discordId); }