kazan-explore changes #75
@ -1,3 +1,3 @@
|
|||||||
exports.KAZAN_EXPLORE_RESULTS_MODEL_NAME = 'KAZAN_EXPLORE_RESULTS'
|
exports.KAZAN_EXPLORE_RESULTS_MODEL_NAME = 'KAZAN_EXPLORE_RESULTS'
|
||||||
|
|
||||||
exports.TOKEN_KEY = "KAZAN_EXPLORE_TOP_SECRET_TOKEN_KEY"
|
exports.TOKEN_KEY = "kazan-explore_top_secret_key_hbfhqf9jq9prg"
|
@ -1,44 +1,9 @@
|
|||||||
const router = require('express').Router();
|
const router = require('express').Router();
|
||||||
|
const { expressjwt } = require('express-jwt')
|
||||||
|
const axios = require('axios');
|
||||||
|
const jwt = require('jsonwebtoken')
|
||||||
const { ResultsModel } = require('./model/results')
|
const { ResultsModel } = require('./model/results')
|
||||||
|
const { TOKEN_KEY } = require('./const')
|
||||||
|
|
||||||
|
|
||||||
router.get('/getQuizResults/:userId', async (request, response) => {
|
|
||||||
const { userId } = request.params;
|
|
||||||
|
|
||||||
try {
|
|
||||||
const results = await ResultsModel.findOne({ userId : userId }).exec();
|
|
||||||
|
|
||||||
if (!results) {
|
|
||||||
return response.status(404).send({ message: 'Quiz results not found' });
|
|
||||||
}
|
|
||||||
|
|
||||||
response.send(results.items);
|
|
||||||
} catch (error) {
|
|
||||||
response.status(500).send({ message: 'An error occurred while fetching quiz results' });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
router.post('/addQuizResult', async (request, response) => {
|
|
||||||
const { userId, quizId, result } = request.body;
|
|
||||||
|
|
||||||
if (!userId || !quizId || !result) {
|
|
||||||
return response.status(400).send({ message: 'Invalid input data' });
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
let userResults = await ResultsModel.findOne({ userId : userId }).exec();
|
|
||||||
if (!userResults) {
|
|
||||||
userResults = new ResultsModel({ userId, items: [] });
|
|
||||||
}
|
|
||||||
userResults.items.push({ quizId, result });
|
|
||||||
await userResults.save();
|
|
||||||
|
|
||||||
response.status(200).send({ message: 'Quiz result added successfully', data: userResults });
|
|
||||||
} catch (error) {
|
|
||||||
response.status(500).send({ message: 'An error occurred while adding quiz result' });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// First page
|
// First page
|
||||||
router.get('/getInfoAboutKazan', (request, response) => {
|
router.get('/getInfoAboutKazan', (request, response) => {
|
||||||
@ -247,4 +212,89 @@ router.post('/registration', async (request, response) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.post('/signin', async (req, res) => {
|
||||||
|
const { user } = req.body
|
||||||
|
|
||||||
|
if (!user || !user.token) {
|
||||||
|
return res.status(404).json({error : "No user found"});
|
||||||
|
}
|
||||||
|
|
||||||
|
const valRes = await axios.get('https://antd-table-v2-backend.onrender.com/api/auth/check',
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
'authorization': `Bearer ${user.token}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
if (valRes.status !== 200) {
|
||||||
|
return res.status(401).json({error : "User authorization error"});
|
||||||
|
}
|
||||||
|
|
||||||
|
const accessToken = jwt.sign({
|
||||||
|
...JSON.parse(JSON.stringify(user._id)),
|
||||||
|
}, TOKEN_KEY, {
|
||||||
|
expiresIn: '12h'
|
||||||
|
})
|
||||||
|
user.token = accessToken;
|
||||||
|
res.json(user)
|
||||||
|
})
|
||||||
|
|
||||||
|
router.use(
|
||||||
|
expressjwt({
|
||||||
|
secret: TOKEN_KEY,
|
||||||
|
algorithms: ['HS256'],
|
||||||
|
getToken: function fromHeaderOrQuerystring(req) {
|
||||||
|
if (req.headers.authorization && req.headers.authorization.split(" ")[0] === "Bearer")
|
||||||
|
return req.headers.authorization.split(" ")[1];
|
||||||
|
else if (req.query && req.query.token)
|
||||||
|
return req.query.token;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
router.get('/getQuizResults/:userId', async (request, response) => {
|
||||||
|
const { userId } = request.params;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const results = await ResultsModel.findOne({ userId: userId }).exec();
|
||||||
|
|
||||||
|
if (!results)
|
||||||
|
return response.status(404).send({ message: 'Quiz results not found' });
|
||||||
|
|
||||||
|
response.send(results.items);
|
||||||
|
} catch (error) {
|
||||||
|
response.status(500).send({ message: 'An error occurred while fetching quiz results' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
router.post('/addQuizResult', async (request, response) => {
|
||||||
|
const { userId, quizId, result } = request.body;
|
||||||
|
|
||||||
|
if (!userId || !quizId || !result)
|
||||||
|
return response.status(400).send({ message: 'Invalid input data' });
|
||||||
|
|
||||||
|
try {
|
||||||
|
let userResults = await ResultsModel.findOne({ userId: userId }).exec();
|
||||||
|
if (!userResults) {
|
||||||
|
userResults = new ResultsModel({ userId, items: [] });
|
||||||
|
}
|
||||||
|
const itemToOverride = userResults.items.find(item => item.quizId === quizId)
|
||||||
|
if (!itemToOverride) {
|
||||||
|
userResults.items.push({ quizId, result });
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
itemToOverride.result = result;
|
||||||
|
}
|
||||||
|
|
||||||
|
await userResults.save();
|
||||||
|
|
||||||
|
response.status(200).send({ message: 'Quiz result added successfully' });
|
||||||
|
} catch (error) {
|
||||||
|
response.status(500).send({ message: 'An error occurred while adding quiz result' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
Loading…
Reference in New Issue
Block a user