import React, { useState, useEffect } from "react"; import System from "../../../models/system"; import SingleUserAuth from "./SingleUserAuth"; import MultiUserAuth from "./MultiUserAuth"; import { AUTH_TOKEN, AUTH_USER } from "../../../utils/constants"; export default function PasswordModal({ mode = "single" }) { return (
{mode === "single" ? : }
); } export function usePasswordModal() { const [auth, setAuth] = useState({ required: false, mode: "single", }); useEffect(() => { async function checkAuthReq() { if (!window) return; const settings = await System.keys(); if (settings?.MultiUserMode) { const currentToken = window.localStorage.getItem(AUTH_TOKEN); if (!!currentToken) { const valid = await System.checkAuth(currentToken); if (!valid) { setAuth({ requiresAuth: true, mode: "multi", }); window.localStorage.removeItem(AUTH_USER); window.localStorage.removeItem(AUTH_TOKEN); return; } else { setAuth({ requiresAuth: false, mode: "multi", }); return; } } else { setAuth({ 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({ requiresAuth: false, mode: "single", }); return; } const currentToken = window.localStorage.getItem(AUTH_TOKEN); if (!!currentToken) { const valid = await System.checkAuth(currentToken); if (!valid) { setAuth({ requiresAuth: true, mode: "single", }); window.localStorage.removeItem(AUTH_TOKEN); return; } else { setAuth({ requiresAuth: false, mode: "single", }); return; } } else { setAuth({ requiresAuth: true, mode: "single", }); return; } } } checkAuthReq(); }, []); return auth; }