From a03a4ff1961192362f52c91beabf6aaa9319ce77 Mon Sep 17 00:00:00 2001
From: Ferenc Schulcz <schulcz.ferenc@gmail.com>
Date: Tue, 2 Jul 2024 13:34:19 +0200
Subject: [PATCH] Same username and playername when adding new user in MC admin

---
 service_plugins/minecraft_admin.py     | 21 ++++++++++++++++++++-
 templates/plugins/minecraft_admin.html |  6 +++---
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/service_plugins/minecraft_admin.py b/service_plugins/minecraft_admin.py
index 368ec8c..f401303 100644
--- a/service_plugins/minecraft_admin.py
+++ b/service_plugins/minecraft_admin.py
@@ -99,7 +99,18 @@ def mcadd(**kwargs):
     password = request.form['password']
     if db.users.find_one({'username': username}) != None:
         return rqtools.get_400(None, errormsg='User already exists!')
-    db.createBasicUser(username, password)
+    if player_exists(username):
+        return rqtools.get_400(None, errormsg="This player is already registered by someone.")
+    db.mc_users.insert_one(
+        {'username': username, 'mcuser': username})
+    with Client('127.0.0.1', 25575, passwd='nagy0nmen0rc0n') as mcclient:
+        response = mcclient.run('authme', 'register',
+                                username, password)
+        if response != "":
+            db.mc_users.delete_one(
+                filter={'username': username, 'mcuser': username})
+            return rqtools.get_400(None, errormsg="Unsuccessful operation. Maybe the password was too weak or it contained your username?")
+    db.createBasicUser(username, password, registeredby=session['username'])
     db.sendMessage(session['username'], username + " added successfully.")
     return rqtools.redirect(rqtools.url_for('service', servicename='mcadmin'))
 
@@ -116,3 +127,11 @@ def mcrestart(**kwargs):
     os.system('sudo /usr/bin/systemctl restart minecraft-spigotd.service')
     db.sendMessage(session['username'], 'Server is restarting.')
     return rqtools.redirect(rqtools.url_for('service', servicename='mcadmin'))
+
+def player_exists(name):
+    x = db.mc_users.find_one(
+        filter={'mcuser': name}
+    )
+    if x is None:
+        return False
+    return True
diff --git a/templates/plugins/minecraft_admin.html b/templates/plugins/minecraft_admin.html
index 380b22b..e307eb6 100644
--- a/templates/plugins/minecraft_admin.html
+++ b/templates/plugins/minecraft_admin.html
@@ -50,11 +50,11 @@
     <h2>Add new user</h2>
     <form method="post" , action="{{ url_for('service', servicename='mcadd') }}" style="max-width: 100%;">
         <section class="inputfield">
-            <label for="username">Username (website only)</label>
+            <label for="username">Minecraft name</label>
             <input name="username" id="username" required>
         </section>
         <section class="inputfield">
-            <label for="password">Password (website only)</label>
+            <label for="password">New password</label>
             <input type="password" name="password" id="password" required>
         </section>
         <section class="inputfield">
@@ -64,4 +64,4 @@
 
 </div>
 
-{% endblock %}
\ No newline at end of file
+{% endblock %}
-- 
GitLab