Your IP : 216.73.217.30


Current Path : /var/www/recommendations/www/routes/
Upload File :
Current File : /var/www/recommendations/www/routes/selectRecommendations.js

const express = require('express');
const router = express.Router();
const crypto = require('crypto');
const pkcs7 = require('pkcs7-padding');

const { Op } = require('sequelize');
const Related = require('../model/Related');
const RelatedTitle = require('../model/RelatedTitle');

//const { sequelize } = require('sequelize');
function decryptEmail(encryptedEmail, secretKey) {
    const ciphertext = Buffer.from(encryptedEmail, 'base64');
    const iv = ciphertext.slice(0, 16);
    const hmac = ciphertext.slice(16, 48);
    const data = ciphertext.slice(48);

    const paddedData = pkcs7.pad(data, 16);

    const decipher = crypto.createDecipheriv('aes-128-cbc', secretKey, iv);
    let decryptedEmail = decipher.update(paddedData, null, 'utf8');
    decryptedEmail += decipher.final('utf8');

    const calcmac = crypto.createHmac('sha256', secretKey).update(data).digest();

    if (hmac.equals(calcmac)) {
        return decryptedEmail;
    }
    return null;
}

function sha256Hash(data) {
    return crypto.createHash('sha256').update(data).digest('hex');
}

router.get('/', async (req, res) => {
    try {
        const sku = req.query.sku;
        const encryptvalue = req.query.encryptedvalue;

/*        const secretKey = 'aabbccddeeff00112233445566778899';
        console.log(encryptvalue)
        const user = decryptEmail(encryptvalue, secretKey);
 */
//        const secretKey = 'la_tua_chiave_segreta';
//        const userHash = sha256Hash(encryptvalue);
        const user = Buffer.from(encryptvalue, "base64").toString("utf8");

//        if (user !== null) {
            const resultRelated = await Related.findAll({
                where: {
                    sku,
                    user,
                },
                attributes: ['position', 'related']
            });
            const resultRelatedTitle = await RelatedTitle.findAll({
                where: {
                    sku,
                    user,
                },
                attributes: ['title'],
            });
 /*
            const resultRelated = await Related.findAll({
                where: {
                    sku,
                    user: sequelize.where(sequelize.fn('SHA2', sequelize.col('user'), 256), user),
                },
                attributes: ['position', 'related']
            });
*/
            const response = {
                title: resultRelatedTitle.length > 0 ? resultRelatedTitle[0].title : '',
                recommendations: resultRelated,
            };
            return res.json(response);
//        }
        return '{}';
    } catch (error) {
        console.error('Error fetching data: ' + error.stack);
        return res.status(500).json({ message: 'Server error' });
    }
});

module.exports = router;