kazan-explore changes #75
@ -1,3 +1,3 @@
 | 
			
		||||
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 { expressjwt } = require('express-jwt')
 | 
			
		||||
const axios = require('axios');
 | 
			
		||||
const jwt = require('jsonwebtoken')
 | 
			
		||||
const { ResultsModel } = require('./model/results')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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' });
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const { TOKEN_KEY } = require('./const')
 | 
			
		||||
 | 
			
		||||
// First page
 | 
			
		||||
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;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user