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);
}