diff --git a/docker-compose/requirements/djangoserver/file/server/server/templates/index.html b/docker-compose/requirements/djangoserver/file/server/server/templates/index.html
index 58465ba..3dc3fe9 100644
--- a/docker-compose/requirements/djangoserver/file/server/server/templates/index.html
+++ b/docker-compose/requirements/djangoserver/file/server/server/templates/index.html
@@ -18,6 +18,7 @@
+
diff --git a/docker-compose/requirements/djangoserver/file/server/server/templates/profilPage.html b/docker-compose/requirements/djangoserver/file/server/server/templates/profilPage.html
index a77561c..8ecb152 100644
--- a/docker-compose/requirements/djangoserver/file/server/server/templates/profilPage.html
+++ b/docker-compose/requirements/djangoserver/file/server/server/templates/profilPage.html
@@ -13,6 +13,7 @@
History
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 9dd41cd..a1552d4 100644
--- a/docker-compose/requirements/djangoserver/file/server/server/templates/settingsPage.html
+++ b/docker-compose/requirements/djangoserver/file/server/server/templates/settingsPage.html
@@ -1,3 +1,14 @@
+
@@ -45,11 +56,13 @@
-
+
+
+
\ No newline at end of file
diff --git a/docker-compose/requirements/djangoserver/file/server/server/typeRequests/changePrivateInfo.py b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/changePrivateInfo.py
index da76c08..35b1fd2 100644
--- a/docker-compose/requirements/djangoserver/file/server/server/typeRequests/changePrivateInfo.py
+++ b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/changePrivateInfo.py
@@ -6,7 +6,7 @@
# By: edbernar
32):
@@ -72,8 +84,11 @@ def changePrivateInfo(socket, content):
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("new_password")):
+ if (hashlib.md5((user.mail + content["old_password"]).encode()).hexdigest() != user.password):
+ socket.sendError("Invalid password", 9029)
+ return
+ user.password = hashlib.md5((user.mail + content["new_password"]).encode()).hexdigest()
if (content.get("discord")):
if (content["discord"] != ""):
user.discord_username = content["discord"]
diff --git a/docker-compose/requirements/nginx/static/img/profilPage/invite.png b/docker-compose/requirements/nginx/static/img/profilPage/invite.png
new file mode 100644
index 0000000..198b71d
Binary files /dev/null and b/docker-compose/requirements/nginx/static/img/profilPage/invite.png differ
diff --git a/docker-compose/requirements/nginx/static/javascript/Page.js b/docker-compose/requirements/nginx/static/javascript/Page.js
index ad4c26a..0a33613 100644
--- a/docker-compose/requirements/nginx/static/javascript/Page.js
+++ b/docker-compose/requirements/nginx/static/javascript/Page.js
@@ -6,7 +6,7 @@
/* By: edbernar {
window.location.href = '/';
- // throw Error(error);
});
return ;
diff --git a/docker-compose/requirements/nginx/static/javascript/home3D/home3D.js b/docker-compose/requirements/nginx/static/javascript/home3D/home3D.js
index 12f7bbf..40747ce 100644
--- a/docker-compose/requirements/nginx/static/javascript/home3D/home3D.js
+++ b/docker-compose/requirements/nginx/static/javascript/home3D/home3D.js
@@ -6,7 +6,7 @@
/* By: edbernar 0.97)
+ spotLight.position.set(0, 10, 0);
+ spotLight.castShadow = true;
+ spotLight.rotateX(Math.PI / 2);
+ scene.add(spotLight);
+ if (Math.random() % 100 > 0.99)
video.pong = '/static/video/homePage/easteregg.webm'
newBgWall();
putObject('/static/models3D/homePage/lamp.glb', -2.5, 0, 2.5, 3, 0, Math.PI + Math.PI / 8, 0);
@@ -405,11 +413,6 @@ function redirection()
interval = null;
}
moveCamera();
- setTimeout(() => {
- setTimeout(() => {
- pageRenderer.changePage('lobbyPage');
- }, 700);
- }, 1000);
}
function moveCamera()
@@ -425,6 +428,11 @@ function moveCamera()
const position = initialPosition.clone().lerp(targetPosition, t * t);
camera.position.copy(position);
+ if (position.equals(targetPosition))
+ {
+ pageRenderer.changePage('lobbyPage');
+ return ;
+ }
if (t < 1)
requestAnimationFrame(updateCameraPosition);
}
diff --git a/docker-compose/requirements/nginx/static/javascript/lobbyPage/main.js b/docker-compose/requirements/nginx/static/javascript/lobbyPage/main.js
index 31d1c82..9a6f84f 100644
--- a/docker-compose/requirements/nginx/static/javascript/lobbyPage/main.js
+++ b/docker-compose/requirements/nginx/static/javascript/lobbyPage/main.js
@@ -6,7 +6,7 @@
/* By: edbernar {
pageRenderer.changePage('profilPage', false, userMeInfo.id);
});
+ buttons[1].addEventListener('click', () => {
+ pageRenderer.changePage('settingsPage', false);
+ });
buttons[2].addEventListener('click', () => {
window.location.replace('/logout');
});
diff --git a/docker-compose/requirements/nginx/static/javascript/login/main.js b/docker-compose/requirements/nginx/static/javascript/login/main.js
index e04bda0..16aeaa7 100644
--- a/docker-compose/requirements/nginx/static/javascript/login/main.js
+++ b/docker-compose/requirements/nginx/static/javascript/login/main.js
@@ -6,7 +6,7 @@
/* By: edbernar {
pageRenderer.changePage('profilPage', false, userMeInfo.id);
});
+ buttons[1].addEventListener('click', () => {
+ pageRenderer.changePage('settingsPage', false);
+ });
buttons[2].addEventListener('click', () => {
window.location.replace('/logout');
})
diff --git a/docker-compose/requirements/nginx/static/javascript/profilPage/main.js b/docker-compose/requirements/nginx/static/javascript/profilPage/main.js
index 9a2eb2c..19b2771 100644
--- a/docker-compose/requirements/nginx/static/javascript/profilPage/main.js
+++ b/docker-compose/requirements/nginx/static/javascript/profilPage/main.js
@@ -6,7 +6,7 @@
/* By: edbernar {
- console.log(userInfo);
if (userInfo == null)
{
pageRenderer.changePage('homePage');
@@ -72,9 +73,12 @@ class ProfilPage
banner.style.backgroundImage = `url("${userInfo.banner}")`
banner.style.backgroundSize = "cover";
banner.style.backgroundRepeat = "no-repeat";
- externButtons(userInfo)
+ externButtons(userInfo);
+ createGraph(ctx, {win: 10, lose: 1});
+ console.warn("Graph values are settled in code, please change it with data request")
if (userInfo.id == userMeInfo.id)
{
+ inviteButton.remove();
pfp.innerHTML = ``
banner.innerHTML = `
`
editPenPfpBg = document.getElementById('editPenPfpBg');
@@ -101,6 +105,14 @@ class ProfilPage
showChatMenu();
showPrivateChat({id: userInfo.id, name: userInfo.username});
});
+ inviteButton.addEventListener('click', () => {
+ if (!userInfo.online)
+ CN.new("Invitation", `Can't invite ${userInfo.username} (offline)`)
+ else
+ {
+ pageRenderer.changePage("waitingGamePage", false, {username: userInfo.username, id: userInfo.id});
+ }
+ });
}
else
convButton.remove();
@@ -164,5 +176,32 @@ function inputChange(isPfp)
}
}
+function createGraph(ctx, data)
+{
+ new Chart(ctx, {
+ type: 'pie',
+ data: {
+ labels: ['Win', 'Lose'],
+ datasets: [{
+ label: 'Couleurs',
+ data: [data.win, data.lose],
+ backgroundColor: ['#11ad11', '#E74040'],
+ hoverOffset: 4
+ }]
+ },
+ options: {
+ responsive: true,
+ plugins: {
+ legend: {
+ position: 'bottom',
+ },
+ tooltip: {
+ enabled: true
+ }
+ }
+ }
+ });
+}
+
export { ProfilPage };
diff --git a/docker-compose/requirements/nginx/static/javascript/settingsPage/settingsPage.js b/docker-compose/requirements/nginx/static/javascript/settingsPage/settingsPage.js
index db5403d..e875f41 100644
--- a/docker-compose/requirements/nginx/static/javascript/settingsPage/settingsPage.js
+++ b/docker-compose/requirements/nginx/static/javascript/settingsPage/settingsPage.js
@@ -6,12 +6,15 @@
/* By: edbernar {
+ if (userMeInfo.username != "")
+ {
+ loginButton.innerText = userMeInfo.username;
+ clearInterval(interval);
+ }
+ }, 200);
}
}, 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;
+ passwordInput.value = newPasswordInput.value = confirmPasswordInput.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';
+ passwordInput.style.backgroundColor = newPasswordInput.style.backgroundColor = confirmPasswordInput.style.backgroundColor = passwordSaveButton.style.backgroundColor = "#bbbbbb";
+ passwordInput.type = newPasswordInput.type = confirmPasswordInput.type = 'text';
+ passwordSaveButton.disabled = true;
}
discordInput.value = data.discord_username;
usernameInput.value = data.username;
@@ -56,14 +71,99 @@ class settingsPage
discordSaveButton.addEventListener('click', () => {
sendRequest("change_private_info", {discord: discordInput.value});
});
+ deleteButton.addEventListener('click', () => {
+ sendRequest("change_private_info", {delete: true});
+ userMeInfo.id = -1;
+ setTimeout(() => {
+ CN.new("Information", "Your account is delete.")
+ }, 1000);
+ pageRenderer.changePage('homePage', false);
+ });
+ if (!data.is42Account)
+ {
+ passwordSaveButton.addEventListener('click', () => {
+ if (newPasswordInput.value != confirmPasswordInput.value)
+ {
+ CN.new("Error", "Passwords do not match", CN.defaultIcon.error);
+ return ;
+ }
+ sendRequest("change_private_info", {old_password: passwordInput.value, new_password: newPasswordInput.value});
+ });
+ }
});
-
+ loginButton.addEventListener('click', showMenu);
+ window.addEventListener('resize', movePopMenuLoginButton);
+ movePopMenuLoginButton();
+ initButtonPopMenuLogin();
+ methButton.addEventListener('click', goBackHome);
}
static dispose()
{
-
+ const loginButton = document.getElementById('loginButton').getElementsByTagName('p')[0];
+ const methButton = document.getElementById("homeButton");
+
+ window.removeEventListener('resize', movePopMenuLoginButton);
+ document.removeEventListener('click', hideMenu);
+ loginButton.addEventListener('click', showMenu);
+ methButton.addEventListener('click', goBackHome);
}
}
+function initButtonPopMenuLogin()
+{
+ const buttons = document.getElementById('popMenuLoginButton').getElementsByTagName('p');
+
+ buttons[0].addEventListener('click', () => {
+ pageRenderer.changePage('profilPage', false, userMeInfo.id);
+ });
+ buttons[1].addEventListener('click', () => {
+ pageRenderer.changePage('settingsPage', false);
+ });
+ buttons[2].addEventListener('click', () => {
+ window.location.replace('/logout');
+ });
+}
+
+function movePopMenuLoginButton()
+{
+ const loginButton = document.getElementById('loginButton');
+ const pos = loginButton.getBoundingClientRect();
+ const popMenuLoginButton = document.getElementById('popMenuLoginButton');
+
+ popMenuLoginButton.style.left = pos.left + "px";
+ popMenuLoginButton.style.top = pos.top + pos.height + "px";
+}
+
+function showMenu()
+{
+ const popMenuLoginButton = document.getElementById('popMenuLoginButton');
+ const loginButton = document.getElementById('loginButton');
+
+ popMenuLoginButton.style.display = 'flex';
+ setTimeout(() => {
+ document.addEventListener('click', hideMenu);
+ loginButton.removeEventListener('click', showMenu);
+ loginButton.addEventListener('click', hideMenu);
+ }, 50);
+}
+
+function hideMenu()
+{
+ const loginButton = document.getElementById('loginButton');
+ const popMenuLoginButton = document.getElementById('popMenuLoginButton');
+
+ popMenuLoginButton.style.display = 'none';
+ setTimeout(() => {
+ document.removeEventListener('click', hideMenu);
+ loginButton.removeEventListener('click', hideMenu);
+ loginButton.addEventListener('click', showMenu);
+ }, 50);
+}
+
+function goBackHome()
+{
+ pageRenderer.changePage('homePage', false);
+}
+
export { settingsPage };
\ No newline at end of file
diff --git a/docker-compose/requirements/nginx/static/javascript/waitingGame/main.js b/docker-compose/requirements/nginx/static/javascript/waitingGame/main.js
index fc11634..c0fc1a7 100644
--- a/docker-compose/requirements/nginx/static/javascript/waitingGame/main.js
+++ b/docker-compose/requirements/nginx/static/javascript/waitingGame/main.js
@@ -6,7 +6,7 @@
/* By: edbernar {
if (points.length < 3)
points += '.';
@@ -38,9 +42,11 @@ class WaitingGamePage
points = '';
sentence.innerText = text + points;
}, 500);
- console.log(lastSelected)
timeout = setTimeout(() => {
- sendRequest("game", {action: 0, skinId: lastSelected.id});
+ if (!lastSelected)
+ sendRequest("game", {action: 0, skinId: 0, opponent: opponentInfo.id});
+ else
+ sendRequest("game", {action: 0, skinId: lastSelected.id, opponent: opponentInfo.id});
timeout = null;
}, 1500);
returnButton.addEventListener('click', returnToLobby);
diff --git a/docker-compose/requirements/nginx/static/style/lobbyPage/lobbyPage.css b/docker-compose/requirements/nginx/static/style/lobbyPage/lobbyPage.css
index 5a5a582..1742a89 100644
--- a/docker-compose/requirements/nginx/static/style/lobbyPage/lobbyPage.css
+++ b/docker-compose/requirements/nginx/static/style/lobbyPage/lobbyPage.css
@@ -432,4 +432,20 @@ body {
.menuSelected {
display: none;
+}
+
+#stats {
+ display: flex;
+ justify-content: center;
+ max-width: 80%;
+ max-height: 80%;
+}
+
+.dashboard .contentStats {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
}
\ No newline at end of file
diff --git a/listError.txt b/listError.txt
index 1dfd88b..3fca675 100644
--- a/listError.txt
+++ b/listError.txt
@@ -29,7 +29,8 @@
- 9025 : Account not verified, please verify your account before logging in
- 9026 : An error occured while sending the email, glhf
- 9027 : An unknown error occured
-- 9028 : You must provide exactly one field to update"
+- 9028 : You must provide exactly one field to update
+- 9029 : Invalid password
- 9100 : Action out of range
- 9101 : No game started