Websocket server
- Added function to create account with request "create_account" - Can create new account (but it s temporary because no db) - Doing 42 connection
This commit is contained in:
@ -10,4 +10,5 @@
|
||||
- 9006 : Invalid login type
|
||||
- 9007 : Invalid username or password
|
||||
- 9008 : User not found
|
||||
- 9009 : Invalid message sent
|
||||
- 9009 : Invalid message sent
|
||||
- 9010 : Invalid token 42
|
24
site/interface/site/login/connectedWith42.js
Normal file
24
site/interface/site/login/connectedWith42.js
Normal file
@ -0,0 +1,24 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* connectedWith42.js :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: edbernar <edbernar@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/08/09 09:15:24 by edbernar #+# #+# */
|
||||
/* Updated: 2024/08/09 09:18:26 by edbernar ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
import { sendRequest } from "../websocket.js";
|
||||
|
||||
function connectedWith42Func()
|
||||
{
|
||||
const token42 = window.location.search.split('code=')[1];
|
||||
|
||||
console.log("connectedWith42Func");
|
||||
sendRequest("login", {type: "by42", token: token42});
|
||||
console.log(token42);
|
||||
}
|
||||
|
||||
export { connectedWith42Func };
|
@ -3,10 +3,10 @@
|
||||
/* ::: :::::::: */
|
||||
/* createConnectDiv.js :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
|
||||
/* By: edbernar <edbernar@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/08/07 18:14:53 by edbernar #+# #+# */
|
||||
/* Updated: 2024/08/08 23:49:20 by edbernar ### ########.fr */
|
||||
/* Updated: 2024/08/09 09:06:59 by edbernar ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -16,7 +16,6 @@ import { sendRequest } from "../websocket.js";
|
||||
|
||||
/*
|
||||
Todo (Eddy) :
|
||||
- Gerer coté serveur le type "createAccount"
|
||||
- ajouter un message de confirmation de création de compte et un message d'erreur
|
||||
- une fleche pour revenir en arriere
|
||||
- remettre sur l'ecran de login quand le compte est créé
|
||||
@ -25,9 +24,6 @@ import { sendRequest } from "../websocket.js";
|
||||
- Ajouter un message d'erreur si le mail est invalide
|
||||
- Connexion par 42
|
||||
|
||||
Todo (Tom) :
|
||||
- Mettre des pages temporaires accesibles qu'on envoie par mail pour confirmer le compte
|
||||
|
||||
*/
|
||||
|
||||
function createConnectDiv(divLogin)
|
||||
@ -38,6 +34,7 @@ function createConnectDiv(divLogin)
|
||||
const inputPass = document.createElement("input");
|
||||
const buttonLogin = createButton(inputLogin, inputPass);
|
||||
const buttonNewAcc = createButtonNewAcc(divConnect, divLogin);
|
||||
const buttonConnect42 = document.createElement("button");
|
||||
|
||||
addGlobalBg();
|
||||
divConnect.setAttribute("id", "connectDiv");
|
||||
@ -48,15 +45,21 @@ function createConnectDiv(divLogin)
|
||||
inputPass.setAttribute("autocomplete", "current-password");
|
||||
inputPass.setAttribute("placeholder", "password");
|
||||
buttonLogin.innerHTML = "Connect";
|
||||
buttonConnect42.innerHTML = "Connect with 42";
|
||||
form.appendChild(inputLogin);
|
||||
form.appendChild(inputPass);
|
||||
form.appendChild(buttonLogin);
|
||||
form.appendChild(buttonNewAcc);
|
||||
form.appendChild(buttonConnect42);
|
||||
divConnect.appendChild(form);
|
||||
form.addEventListener('submit', (e) => {
|
||||
e.preventDefault();
|
||||
buttonLogin.click();
|
||||
});
|
||||
buttonConnect42.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
window.location.replace("https://api.intra.42.fr/oauth/authorize?client_id=u-s4t2ud-d9d6d46bd0be36dc13718981df4bfcf37e574ea364a07fcb5c39658be0f5706c&redirect_uri=http%3A%2F%2F127.0.0.1%3A5500%2Fsite%2F&response_type=code");
|
||||
});
|
||||
return (divConnect);
|
||||
}
|
||||
|
||||
@ -167,6 +170,10 @@ function createNewAccount(e)
|
||||
}
|
||||
else if (inputUsername.value.length < 3)
|
||||
CN.new("Error", "Username must be at least 3 characters long", CN.defaultIcon.error);
|
||||
else if (inputUsername.value.length > 20)
|
||||
CN.new("Error", "Username must be at most 20 characters long", CN.defaultIcon.error);
|
||||
else if (inputUsername.value.search(' ') !== -1)
|
||||
CN.new("Error", "Username must not contain spaces", CN.defaultIcon.error);
|
||||
else if (inputUsername.value.search(/[^a-zA-Z0-9]/) !== -1)
|
||||
CN.new("Error", "Username must contain only letters and numbers", CN.defaultIcon.error);
|
||||
else if (inputPass.value.length < 8)
|
||||
@ -180,7 +187,7 @@ function createNewAccount(e)
|
||||
else
|
||||
{
|
||||
hashPassword(inputPass.value).then((hash) => {
|
||||
sendRequest("createAccount", {username: inputUsername.value, mail: inputMail.value, password: hash});
|
||||
sendRequest("create_account", {username: inputUsername.value, mail: inputMail.value, password: hash});
|
||||
}).catch((err) => {
|
||||
CN.new("Error", "An error occured while trying to create a new account", CN.defaultIcon.error);
|
||||
});
|
||||
|
@ -6,7 +6,7 @@
|
||||
/* By: edbernar <edbernar@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/08/07 17:40:15 by edbernar #+# #+# */
|
||||
/* Updated: 2024/08/08 17:07:12 by edbernar ### ########.fr */
|
||||
/* Updated: 2024/08/09 09:20:03 by edbernar ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -14,6 +14,7 @@ import { createNotification as CN } from "../notification/main.js";
|
||||
import { userMeInfo, waitForLogin } from "../typeResponse/typeLogin.js";
|
||||
import { createConnectDiv } from "./createConnectDiv.js";
|
||||
import { createThreeDiv } from "./createThreeDiv.js";
|
||||
import { connectedWith42Func } from "./connectedWith42.js";
|
||||
|
||||
function login()
|
||||
{
|
||||
@ -43,4 +44,5 @@ function showLoginDiv()
|
||||
document.body.appendChild(divLogin);
|
||||
}
|
||||
|
||||
|
||||
export { login };
|
@ -3,10 +3,10 @@
|
||||
/* ::: :::::::: */
|
||||
/* websocket.js :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
|
||||
/* By: edbernar <edbernar@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/07/31 22:17:24 by edbernar #+# #+# */
|
||||
/* Updated: 2024/08/07 22:14:03 by edbernar ### ########.fr */
|
||||
/* Updated: 2024/08/09 09:21:28 by edbernar ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -14,6 +14,7 @@ import { typeErrorInvalidPassword } from "./typeErrorResponse/typeErrorInvalidPa
|
||||
import { typePrivateListMessage } from "./typeResponse/typePrivateListMessage.js";
|
||||
import { typeNewPrivateMessage } from "./typeResponse/typeNewPrivateMessage.js";
|
||||
import { typePrivateListUser } from "./typeResponse/typePrivateListUser.js";
|
||||
import { connectedWith42Func } from "./login/connectedWith42.js";
|
||||
import { typeLogin } from "./typeResponse/typeLogin.js";
|
||||
|
||||
/*
|
||||
@ -33,7 +34,8 @@ const errorFunction = [typeErrorInvalidPassword];
|
||||
|
||||
let status = 0;
|
||||
|
||||
function getCookie(name) {
|
||||
function getCookie(name)
|
||||
{
|
||||
const value = `; ${document.cookie}`;
|
||||
const parts = value.split(`; ${name}=`);
|
||||
let token = null;
|
||||
@ -47,7 +49,7 @@ function getCookie(name) {
|
||||
}
|
||||
|
||||
socket.onopen = () => {
|
||||
let token = getCookie("token");
|
||||
let token = getCookie("token");
|
||||
|
||||
status = 1;
|
||||
console.log('Connected');
|
||||
@ -57,7 +59,10 @@ socket.onopen = () => {
|
||||
sendRequest("login", {type: "byToken", token: token});
|
||||
}
|
||||
else
|
||||
{
|
||||
connectedWith42Func();
|
||||
typeLogin(null);
|
||||
}
|
||||
};
|
||||
|
||||
socket.onmessage = (event) => {
|
||||
@ -95,17 +100,29 @@ function sendRequest(type, content) {
|
||||
let coc = null;
|
||||
|
||||
if (status === 0)
|
||||
{
|
||||
console.warn('Not connected');
|
||||
return ;
|
||||
}
|
||||
if (content instanceof Object)
|
||||
coc = JSON.stringify(content);
|
||||
else
|
||||
coc = content;
|
||||
|
||||
socket.send(JSON.stringify({
|
||||
type: type,
|
||||
// token: token,
|
||||
content: content
|
||||
}));
|
||||
if (getCookie("token"))
|
||||
{
|
||||
socket.send(JSON.stringify({
|
||||
type: type,
|
||||
token: getCookie("token"),
|
||||
content: content
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
socket.send(JSON.stringify({
|
||||
type: type,
|
||||
content: content
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
export { socket, sendRequest };
|
Reference in New Issue
Block a user