Skip to content

Commit a0bfbbc

Browse files
authored
feat: ✨ Adding security to handle if the user have a verfied acount before create a new challenge (#7)
1 parent ff27168 commit a0bfbbc

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

api_server/server.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ app.get('/set_challenge', async (req, res) => {
160160
const type = req.query.type;
161161
const token = req.query.token;
162162
const api_token = req.query.api_token
163+
163164
if (api_token != getenv('API_TOKEN'))
164165
return res.status(700).json({ error: 'Wrong api token' });
165166
if ((defi === undefined || type === undefined || token === undefined) && (type != 1 && type != 2)) {

app_server/server.cjs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -157,16 +157,29 @@ async function set_new_user_api(email, pseudo, password, token) {
157157
}
158158
}
159159

160+
async function create_challenge_api(defi, type, token) {
161+
const response = await fetch('http://api_js:8080/set_challenge?defi='+defi+'&type='+type+'&token='+token+'&api_token='+getenv('API_TOKEN'));
162+
if (!response.ok) {
163+
throw new Error('Failed to fetch data');
164+
}
165+
const data = await response.json();
166+
return data;
167+
}
168+
160169
async function set_new_challenge_api(defi, type, token) {
161170
try {
162-
const response = await fetch('http://api_js:8080/set_challenge?defi='+defi+'&type='+type+'&token='+token+'&api_token='+getenv('API_TOKEN'));
163-
if (!response.ok) {
164-
throw new Error('Failed to fetch data');
171+
const info = await get_pseudo_from_api_with_token(token);
172+
if (Object.keys(info).length === 1) {
173+
if (info[0].status_verif == 1) {
174+
return create_challenge_api(defi, type, token);
175+
} else {
176+
throw new Error('Email not verified');
177+
}
178+
} else {
179+
throw new Error('No account found');
165180
}
166-
const data = await response.json();
167-
return data;
168181
} catch (error) {
169-
console.error('Error:', error);
182+
throw new Error(error.message);
170183
}
171184
}
172185

@@ -244,7 +257,7 @@ io.on("connection", (socket) => {
244257
socket.emit("awnser_server_data_challenge :"+data.token, {status : "success"})
245258
})
246259
.catch(error => {
247-
socket.emit("awnser_server_data_challenge :"+data.token, {status : "error", message : "There is a error with the data"})
260+
socket.emit("awnser_server_data_challenge :"+data.token, {status : "error", message : error.message})
248261
});
249262
}
250263
});

app_server/src/add_challenge.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ <h1 id="title" class="">Ajout de challenge</h1>
6262
document.getElementById('defi').value = "";
6363
console.log(txt);
6464
if ((typeof txt === "string" && txt.length === 0) || txt == null) {
65-
document.getElementById('confirmation').innerHTML = "<p class=\"text-red-400 text-xl font-bold\">Challenge vide !</p>"
65+
document.getElementById('confirmation').innerHTML = "<p class=\"text-red-600 text-xl font-bold\">Empty challenge</p>"
6666
}
6767
else {
6868
socket.emit("send_data_add_challenge", {type : choice, defi : txt, token : token});
@@ -73,7 +73,7 @@ <h1 id="title" class="">Ajout de challenge</h1>
7373
if (data.status == "success") {
7474
document.getElementById('confirmation').innerHTML = "<p class=\"text-green-400 text-xl font-bold\">Challenge created !</p>"
7575
} else {
76-
document.getElementById('confirmation').innerHTML = "<p class=\"text-red-400 text-xl font-bold\">Error</p>"
76+
document.getElementById('confirmation').innerHTML = "<p class=\"text-red-600 text-xl font-bold\">"+data.message+"</p>"
7777
}
7878
});
7979
}

0 commit comments

Comments
 (0)