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 @@ + @@ -20,6 +21,11 @@

Dashboard

+
+ + + +

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 @@ +
+

METH

+
+

LOGIN

+
+
+

Profil

+

Settings

+

Logout

+
+
@@ -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