phx-react
Version:
PHX REACT
64 lines • 2.34 kB
JavaScript
import CryptoJS from 'crypto-js';
import { IV_LENGTH, SECRET_KEY } from '../utils/constants';
export const encryptDataSync = (data) => {
const iv = CryptoJS.lib.WordArray.random(IV_LENGTH);
const encrypted = CryptoJS.AES.encrypt(JSON.stringify(data), CryptoJS.enc.Hex.parse(SECRET_KEY), {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
return JSON.stringify({
iv: CryptoJS.enc.Base64.stringify(iv),
encryptedData: encrypted.toString(),
});
};
export const decryptCookie = (encryptedJson) => {
try {
const { encryptedData, iv } = JSON.parse(encryptedJson);
const ivBytes = CryptoJS.enc.Base64.parse(iv);
const secretKeyBytes = CryptoJS.enc.Hex.parse(SECRET_KEY);
const decrypted = CryptoJS.AES.decrypt(encryptedData, secretKeyBytes, {
iv: ivBytes,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
return decryptedText ? JSON.parse(decryptedText) : null;
}
catch (error) {
console.error('[decryptCookie] Error:', error);
return null;
}
};
// chuyển chữ có dấu thành không dấu
export function unaccentValue(rawValue) {
if (!rawValue)
return '';
return rawValue
.normalize('NFD') // Tách các ký tự có dấu thành ký tự cơ bản và dấu
.replace(/[\u0300-\u036f]/g, '') // Loại bỏ các dấu
.replace(/Đ/g, 'D') // Thay Đ thành D
.replace(/đ/g, 'd'); // Thay đ thành d
}
export const getResponsiveClass = (prefix, value, map) => {
if (!value)
return '';
if (typeof value !== 'object') {
const finalVal = map ? map[value] : value;
return finalVal ? `${prefix}-${String(finalVal)}` : prefix;
}
return Object.entries(value)
.map(([breakpoint, val]) => {
if (val === undefined)
return '';
const finalVal = map ? map[val] : val;
const classBody = finalVal ? `${prefix}-${String(finalVal)}` : prefix;
if (breakpoint === 'initial') {
return classBody;
}
return `${breakpoint}:${classBody}`;
})
.filter(Boolean)
.join(' ');
};
//# sourceMappingURL=helpers.js.map