You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
2.0 KiB
51 lines
2.0 KiB
5 months ago
|
import { Router } from "express";
|
||
|
import { getFlagHash } from "../server.js"
|
||
|
import { getUserID } from "../queries/userQueries.js";
|
||
|
import { getSubmissions, insertSubmission, updateSubmissionAttempts } from "../queries/submissionQueries.js";
|
||
|
const router = Router();
|
||
|
|
||
|
router.post('/checkFlagSubmission', async (req, res) => {
|
||
|
const { email, flagID, submittedFlag } = req.body;
|
||
|
try{
|
||
|
const correctFlag = getFlagHash(email, flagID);
|
||
|
const userID = await getUserID(email);
|
||
|
|
||
|
const submissions = await getSubmissions(userID, flagID);
|
||
|
if(submittedFlag === correctFlag){
|
||
|
if(submissions.length === 0){ //If the submission is correct and it is their first submission.
|
||
|
await insertSubmission(userID, flagID, 1, 1);
|
||
|
await updateUserFlags(userID);
|
||
|
return res.json({correct: true, message: "Correct flag submitted!"});
|
||
|
}
|
||
|
else{ //If the submission is correct and it is not their first submission
|
||
|
await updateSubmissionAttempts(userID, flagID);
|
||
|
await updateUserFlags(userID);
|
||
|
return res.json({correct: true, message: "Correct flag submitted!"});
|
||
|
}
|
||
|
}
|
||
|
else{
|
||
|
if(submissions.length === 0){ //If the submission is incorrect and it is their first submssion
|
||
|
await insertSubmission(userID, flagID, 0, 1);
|
||
|
return res.json({correct: false, message: "Incorrect flag. Try again!"});
|
||
|
}
|
||
|
else{ //If their submission is incorrect and it is not their first submission
|
||
|
await updateSubmissionAttempts(userID, flagID);
|
||
|
return res.json({correct: false, message: "Incorrect flag. Try again!"});
|
||
|
}
|
||
|
}
|
||
|
} catch(err){
|
||
|
console.error("Could not add submission:", err);
|
||
|
return res.status(500).json({correct: false, message: "ERROR SUBMITTING FLAG"});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
router.post('/checkPracSubmission', async (req, res) => {
|
||
|
const { email, flagID, submittedFlag } = req.body;
|
||
|
const correctFlag = getFlagHash(email, flagID);
|
||
|
if(correctFlag === submittedFlag)
|
||
|
return res.json({correct: true, message: 'Correct flag submitted!'});
|
||
|
else
|
||
|
return res.json({correct: false, message: 'Incorrect flag. Try Again'});
|
||
|
});
|
||
|
|
||
|
export default router;
|