diff --git a/server/routers/kazan-explore/const.js b/server/routers/kazan-explore/const.js
index 633fa7a..b6694ea 100644
--- a/server/routers/kazan-explore/const.js
+++ b/server/routers/kazan-explore/const.js
@@ -1,3 +1,3 @@
 exports.KAZAN_EXPLORE_RESULTS_MODEL_NAME = 'KAZAN_EXPLORE_RESULTS'
 
-exports.TOKEN_KEY = "KAZAN_EXPLORE_TOP_SECRET_TOKEN_KEY"
\ No newline at end of file
+exports.TOKEN_KEY = "kazan-explore_top_secret_key_hbfhqf9jq9prg"
\ No newline at end of file
diff --git a/server/routers/kazan-explore/index.js b/server/routers/kazan-explore/index.js
index b74f5b5..e3527d8 100644
--- a/server/routers/kazan-explore/index.js
+++ b/server/routers/kazan-explore/index.js
@@ -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;