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 (
);
}
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;
}