| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import { beforeUnloadHandler } from "../app.js";
- import { showError } from "../utils/error.js";
- // Configuración: Cambia estos números para que sean únicos para tu proyecto
- const OFFSET = 99887766; // Un número grande para asegurar longitud mínima
- const CLAVE = 836295738; // Tu "secreto" para el XOR
- const desencriptar = (hash) => {
- // 1. Revertimos el string y volvemos a base 10
- const baseNum = parseInt(hash.split('').reverse().join(''), 12);
- // 2. Aplicamos XOR (es reversible) y restamos el Offset
- return (baseNum ^ CLAVE) - OFFSET;
- };
- function getTableFromUrl() {
- const params = new URLSearchParams(window.location.search);
- const table = params.get("table");
- console.log(table);
- return Number(desencriptar(table));
- }
- async function login(email, pin) {
- const response = await fetch("/api/users/login", {
- method: "POST",
- headers: {
- "Content-Type": "application/json"
- },
- body: JSON.stringify({ email, pin }) // Enviamos table si el back lo requiere en login
- });
-
- if (response.status == 420) {
- window.removeEventListener("beforeunload", beforeUnloadHandler);
- window.location.replace("/");
- }
- if (response.status === 401 || response.status === 429 || response.status === 404) {
- const errorData = await response.json();
- const msg = errorData.message || "Error de autenticación";
- const attempts = errorData.data?.attempts_remaining ? ` Intentos restantes: ${errorData.data.attempts_remaining}` : "";
- showError(`${msg}.${attempts}`);
- throw new Error(msg);
- } else if (response.status != 200) {
- const errorData = await response.json();
- showError(errorData.message || "Error desconocido");
- throw new Error(errorData.message);
- }
- const JSONdata = await response.json();
- const userData = JSONdata.data;
- if (!userData || !userData.token) {
- showError("Error al iniciar sesión, Intenta mas tarde.");
- throw new Error("Error al iniciar sesión.");
- }
- return userData;
- }
- async function guestLogin() {
- try {
- const response = await fetch("/api/users/guest");
- const data = await response.json();
- if (!data.success || !data.data || !data.data.token) {
- throw new Error("Error al generar sesión de invitado");
- }
- return data.data; // Retorna { token: "..." }
- } catch (e) {
- console.error(e);
- showError("No se pudo iniciar como invitado.");
- throw e;
- }
- }
- async function existsTable(table) {
- const responseTableExists = await fetch(`/api/store/tables/exists?q=${table}`, {
- method: "GET",
- headers: {
- "Content-Type": "application/json"
- }
- });
-
- const data = (await responseTableExists.json()).data.exists;
- return data;
- }
- export { login, existsTable, guestLogin, getTableFromUrl };
|