107 lines
2.6 KiB
TypeScript
107 lines
2.6 KiB
TypeScript
import { type ClassValue, clsx } from "clsx";
|
|
import { twMerge } from "tailwind-merge";
|
|
import Cookies from "js-cookie";
|
|
import CryptoJS from "crypto-js";
|
|
import Swal from "sweetalert2";
|
|
import withReactContent from "sweetalert2-react-content";
|
|
|
|
export function cn(...inputs: ClassValue[]) {
|
|
return twMerge(clsx(inputs));
|
|
}
|
|
|
|
const MySwal = withReactContent(Swal);
|
|
|
|
const Toast = MySwal.mixin({
|
|
toast: true,
|
|
position: "top-end",
|
|
showConfirmButton: false,
|
|
timer: 3000,
|
|
timerProgressBar: true,
|
|
didOpen: (toast) => {
|
|
toast.addEventListener("mouseenter", Swal.stopTimer);
|
|
toast.addEventListener("mouseleave", Swal.resumeTimer);
|
|
},
|
|
});
|
|
|
|
export const hexToRGB = (hex: any, alpha?: number): any => {
|
|
const r = parseInt(hex.slice(1, 3), 16);
|
|
const g = parseInt(hex.slice(3, 5), 16);
|
|
const b = parseInt(hex.slice(5, 7), 16);
|
|
|
|
if (alpha) {
|
|
return `rgba(${r}, ${g}, ${b}, ${alpha})`;
|
|
} else {
|
|
return `rgb(${r}, ${g}, ${b})`;
|
|
}
|
|
};
|
|
|
|
export function getCookiesDecrypt(param: any) {
|
|
const cookiesEncrypt = Cookies.get(param);
|
|
try {
|
|
if (cookiesEncrypt != undefined) {
|
|
const output = CryptoJS.AES.decrypt(
|
|
cookiesEncrypt.toString(),
|
|
`${param}_EncryptKey@mediahub`
|
|
).toString(CryptoJS.enc.Utf8);
|
|
if (output.startsWith('"')) {
|
|
return output.slice(1, -1);
|
|
}
|
|
return output;
|
|
}
|
|
} catch (e) {
|
|
console.log("Error", cookiesEncrypt);
|
|
}
|
|
}
|
|
|
|
export function successToast(title: string, text: string) {
|
|
Toast.fire({
|
|
icon: "error",
|
|
title: title,
|
|
text: text,
|
|
});
|
|
}
|
|
|
|
export function setCookiesEncrypt(
|
|
param: string,
|
|
data: any,
|
|
options?: Cookies.CookieAttributes
|
|
) {
|
|
// Enkripsi data
|
|
const cookiesEncrypt = CryptoJS.AES.encrypt(
|
|
JSON.stringify(data),
|
|
`${param}_EncryptKey@mediahub`
|
|
).toString(); // Tambahkan .toString() di sini
|
|
|
|
// Simpan data terenkripsi di cookie
|
|
Cookies.set(param, cookiesEncrypt, options);
|
|
}
|
|
|
|
export function checkAuthorization(page: any) {
|
|
const roleId = getCookiesDecrypt("urie");
|
|
const levelNumber = getCookiesDecrypt("ulne");
|
|
if (
|
|
(Number(roleId) !== 3 &&
|
|
Number(roleId) !== 4 &&
|
|
Number(roleId) !== 11 &&
|
|
Number(roleId) !== 12 &&
|
|
Number(roleId) !== 2) ||
|
|
roleId == undefined
|
|
) {
|
|
console.log("Wrong Authentication");
|
|
// window.location.href = "/";
|
|
} else if (page == "admin" && Number(levelNumber) !== 1) {
|
|
console.log("Wrong Authentication Admin");
|
|
// window.location.href = "/";
|
|
}
|
|
}
|
|
|
|
export function checkLoginSession() {
|
|
const userId = getCookiesDecrypt("uie");
|
|
const jwt = Cookies.get("access_token");
|
|
const data = {
|
|
userId,
|
|
jwt,
|
|
};
|
|
// doCheckSession(data);
|
|
}
|