diff --git a/docker-compose/requirements/djangoserver/file/server/server/templates/settingsPage.html b/docker-compose/requirements/djangoserver/file/server/server/templates/settingsPage.html
index d82a824..9dd41cd 100644
--- a/docker-compose/requirements/djangoserver/file/server/server/templates/settingsPage.html
+++ b/docker-compose/requirements/djangoserver/file/server/server/templates/settingsPage.html
@@ -6,7 +6,7 @@
@@ -24,7 +24,7 @@
diff --git a/docker-compose/requirements/djangoserver/file/server/server/typeRequests/changePrivateInfo.py b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/changePrivateInfo.py
new file mode 100644
index 0000000..da76c08
--- /dev/null
+++ b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/changePrivateInfo.py
@@ -0,0 +1,86 @@
+# **************************************************************************** #
+# #
+# ::: :::::::: #
+# changePrivateInfo.py :+: :+: :+: #
+# +:+ +:+ +:+ #
+# By: edbernar 20):
+ socket.sendError("Username must be at most 20 characters long", 9017)
+ return
+ if (not all(c in "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" for c in content["username"])):
+ socket.sendError("Username must contain only letters and numbers", 9018)
+ return
+ if (User.objects.filter(username=content["username"]).exists()):
+ socket.sendError("Username already used", 9023)
+ return
+ if (content.get("password")):
+ if (len(content["password"]) < 8):
+ socket.sendError("Password must be at least 8 characters long", 9019)
+ return
+ if (content["password"].find(content["username"]) != -1):
+ socket.sendError("Password must not contain the username", 9021)
+ return
+ if (not bool(re.match(password_pattern, content["password"]))):
+ socket.sendError("Password must contain at least one lowercase letter, one uppercase letter and one special character", 9020)
+ return
+ if (content.get("discord")):
+ if (len(content["discord"]) > 32):
+ socket.sendError("Discord must be at most 32 characters long", 9024)
+ return
+ if (not bool(re.match(discord_pattern, content["discord"]))):
+ socket.sendError("Discord must contain only letters, numbers and underscores or points", 9025)
+ return
+
+ user = User.objects.get(id=socket.id)
+ if (content.get("username")):
+ user.username = content["username"]
+ socket.username = content["username"]
+ socket.scope["session"]['username'] = content["username"]
+ if (content.get("password")):
+ user.password = hashlib.sha256(user['mail' + content["password"]].encode()).hexdigest()
+ if (content.get("discord")):
+ if (content["discord"] != ""):
+ user.discord_username = content["discord"]
+ else:
+ user.discord_username = None
+ user.save()
+ socket.scope["session"].save()
+ socket.sync_send(json.dumps({"type": "change_private_info", "content": "Successfully updated."}))
+ except Exception as e:
+ socket.sendError("An unknown error occured", 9027, e)
\ No newline at end of file
diff --git a/docker-compose/requirements/djangoserver/file/server/server/typeRequests/getPrivateInfo.py b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/getPrivateInfo.py
new file mode 100644
index 0000000..f2a979f
--- /dev/null
+++ b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/getPrivateInfo.py
@@ -0,0 +1,28 @@
+# **************************************************************************** #
+# #
+# ::: :::::::: #
+# getPrivateInfo.py :+: :+: :+: #
+# +:+ +:+ +:+ #
+# By: edbernar +#+ +:+ +#+ */
+/* By: edbernar {
+ if (status)
+ {
+ sendRequest("get_private_info", {});
+ clearInterval(interval);
+ }
+ }, 200);
+ waitForPrivateInfo().then(data => {
+ console.log(data);
+ emailInput.value = data.mail ? data.mail : "Disabled because you have a 42 account."
+ passwordInput.value = newPasswordInput.value = confirmOasswordInput.value = data.is42Account ? "Disabled because you have a 42 account." : null;
+ if (data.is42Account)
+ {
+ passwordInput.style.backgroundColor = newPasswordInput.style.backgroundColor = confirmOasswordInput.style.backgroundColor = "#bbbbbb";
+ passwordInput.type = newPasswordInput.type = confirmOasswordInput.type = 'text';
+ }
+ discordInput.value = data.discord_username;
+ usernameInput.value = data.username;
+
+ usernameSaveButton.addEventListener('click', () => {
+ sendRequest("change_private_info", {username: usernameInput.value});
+ });
+ discordSaveButton.addEventListener('click', () => {
+ sendRequest("change_private_info", {discord: discordInput.value});
+ });
+ });
+
}
static dispose()
diff --git a/docker-compose/requirements/nginx/static/javascript/typeResponse/typePrivateInfo.js b/docker-compose/requirements/nginx/static/javascript/typeResponse/typePrivateInfo.js
new file mode 100644
index 0000000..7fd350a
--- /dev/null
+++ b/docker-compose/requirements/nginx/static/javascript/typeResponse/typePrivateInfo.js
@@ -0,0 +1,42 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* typePrivateInfo.js :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: edbernar {
+ if (PrivateInfoAvailable)
+ {
+ PrivateInfoAvailable = false;
+ resolve(PrivateInfo);
+ }
+ else
+ PrivateInfoResolve = resolve;
+ });
+}
+
+function typePrivateInfo(data)
+{
+ PrivateInfo = data;
+ PrivateInfoAvailable = true;
+ if (PrivateInfoResolve)
+ {
+ PrivateInfoResolve(PrivateInfo);
+ PrivateInfoResolve = null;
+ PrivateInfoAvailable = false;
+ }
+}
+
+export { typePrivateInfo, waitForPrivateInfo };
\ No newline at end of file
diff --git a/docker-compose/requirements/nginx/static/javascript/websocket.js b/docker-compose/requirements/nginx/static/javascript/websocket.js
index bec3f78..fcdf394 100644
--- a/docker-compose/requirements/nginx/static/javascript/websocket.js
+++ b/docker-compose/requirements/nginx/static/javascript/websocket.js
@@ -6,7 +6,7 @@
/* By: edbernar