import React, { useState, useEffect } from "react"; import System from "../../../models/system"; import SingleUserAuth from "./SingleUserAuth"; import MultiUserAuth from "./MultiUserAuth"; import { AUTH_TOKEN, AUTH_USER, AUTH_TIMESTAMP, } from "../../../utils/constants"; import useLogo from "../../../hooks/useLogo"; import illustration from "@/media/illustrations/login-illustration.svg"; export default function PasswordModal({ mode = "single" }) { const { loginLogo } = useLogo(); return (
login illustration
Logo {mode === "single" ? : }
); } export function usePasswordModal(notry = false) { const [auth, setAuth] = useState({ loading: true, requiresAuth: false, mode: "single", }); useEffect(() => { async function checkAuthReq() { if (!window) return; // If the last validity check is still valid // we can skip the loading. if (!System.needsAuthCheck() && notry === false) { setAuth({ loading: false, requiresAuth: false, mode: "multi", }); return; } const settings = await System.keys(); if (settings?.MultiUserMode) { const currentToken = window.localStorage.getItem(AUTH_TOKEN); if (!!currentToken) { const valid = notry ? false : await System.checkAuth(currentToken); if (!valid) { setAuth({ loading: false, requiresAuth: true, mode: "multi", }); window.localStorage.removeItem(AUTH_USER); window.localStorage.removeItem(AUTH_TOKEN); window.localStorage.removeItem(AUTH_TIMESTAMP); return; } else { setAuth({ loading: false, requiresAuth: false, mode: "multi", }); return; } } else { setAuth({ loading: false, requiresAuth: true, mode: "multi", }); return; } } else { // Running token check in single user Auth mode. // If Single user Auth is disabled - skip check const requiresAuth = settings?.RequiresAuth || false; if (!requiresAuth) { setAuth({ loading: false, requiresAuth: false, mode: "single", }); return; } const currentToken = window.localStorage.getItem(AUTH_TOKEN); if (!!currentToken) { const valid = notry ? false : await System.checkAuth(currentToken); if (!valid) { setAuth({ loading: false, requiresAuth: true, mode: "single", }); window.localStorage.removeItem(AUTH_TOKEN); window.localStorage.removeItem(AUTH_USER); window.localStorage.removeItem(AUTH_TIMESTAMP); return; } else { setAuth({ loading: false, requiresAuth: false, mode: "single", }); return; } } else { setAuth({ loading: false, requiresAuth: true, mode: "single", }); return; } } } checkAuthReq(); }, []); return auth; }