From eafb26d4623b80e7ba7f313614443c264b28c269 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Wed, 20 Mar 2024 15:26:38 +0530 Subject: [PATCH] feat: restrict route if user subscription is expired --- apps/OpenSign/src/layout/HomeLayout.js | 60 ++++++++++++++++++--- apps/OpenSign/src/pages/Login.js | 73 +++++++++++++++++++++++--- 2 files changed, 118 insertions(+), 15 deletions(-) diff --git a/apps/OpenSign/src/layout/HomeLayout.js b/apps/OpenSign/src/layout/HomeLayout.js index d3cfd8188..84cd51f0f 100644 --- a/apps/OpenSign/src/layout/HomeLayout.js +++ b/apps/OpenSign/src/layout/HomeLayout.js @@ -18,6 +18,12 @@ const HomeLayout = () => { const arr = useSelector((state) => state.TourSteps); const [isUserValid, setIsUserValid] = useState(true); const [isLoader, setIsLoader] = useState(true); + // reactour state + const [isCloseBtn, setIsCloseBtn] = useState(true); + const [isTour, setIsTour] = useState(false); + const [tourStatusArr, setTourStatusArr] = useState([]); + const [tourConfigs, setTourConfigs] = useState([]); + useEffect(() => { (async () => { try { @@ -27,7 +33,7 @@ const HomeLayout = () => { sessionToken: localStorage.getItem("accesstoken") }); if (user) { - setIsUserValid(true); + checkIsSubscribed(); setIsLoader(false); } else { setIsUserValid(false); @@ -37,14 +43,54 @@ const HomeLayout = () => { setIsUserValid(false); } })(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); - // reactour state - const [isCloseBtn, setIsCloseBtn] = useState(true); - const [isTour, setIsTour] = useState(false); - const [tourStatusArr, setTourStatusArr] = useState([]); - const [tourConfigs, setTourConfigs] = useState([]); - + async function checkIsSubscribed() { + const currentUser = Parse.User.current(); + // const userSettings = appInfo.settings; + // const setting = userSettings.find((x) => x.role === _currentRole); + // const redirectUrl = + // location?.state?.from || `/${setting.pageType}/${setting.pageId}`; + const user = await Parse.Cloud.run("getUserDetails", { + email: currentUser.get("email") + }); + const _user = user.toJSON(); + if (_user.TenantId) { + localStorage.setItem("TenetId", _user.TenantId.objectId); + } + // localStorage.setItem("PageLanding", setting.pageId); + // localStorage.setItem("defaultmenuid", setting.menuId); + // localStorage.setItem("pageType", setting.pageType); + if (process.env.REACT_APP_ENABLE_SUBSCRIPTION) { + // const LocalUserDetails = { + // name: _user.Name, + // email: _user.Email, + // phone: _user.Phone, + // company: _user.Company + // }; + // localStorage.setItem("userDetails", JSON.stringify(LocalUserDetails)); + const billingDate = _user.Next_billing_date && _user.Next_billing_date; + if (billingDate) { + if (billingDate > new Date()) { + // localStorage.removeItem("userDetails"); + // Redirect to the appropriate URL after successful login + // navigate(redirectUrl); + setIsUserValid(true); + return true; + } else { + navigate(`/subscription`); + } + } else { + navigate(`/subscription`); + } + } else { + setIsUserValid(true); + return true; + // Redirect to the appropriate URL after successful login + // navigate(redirectUrl); + } + } const showSidebar = () => { setIsOpen((value) => !value); }; diff --git a/apps/OpenSign/src/pages/Login.js b/apps/OpenSign/src/pages/Login.js index 7ed464696..8bbbce23f 100644 --- a/apps/OpenSign/src/pages/Login.js +++ b/apps/OpenSign/src/pages/Login.js @@ -745,6 +745,13 @@ function Login() { // Get TenentID from Extendend Class localStorage.setItem("extended_class", item.extended_class); const currentUser = Parse.User.current(); + const userSettings = appInfo.settings; + const setting = userSettings.find( + (x) => x.role === _currentRole + ); + const redirectUrl = + location?.state?.from || + `/${setting.pageType}/${setting.pageId}`; await Parse.Cloud.run("getUserDetails", { email: currentUser.get("email") }).then( @@ -783,16 +790,66 @@ function Login() { tenentInfo.push(obj); } }); - localStorage.setItem("PageLanding", item.pageId); - localStorage.setItem("defaultmenuid", item.menuId); - localStorage.setItem("pageType", item.pageType); - navigate(`/${item.pageType}/${item.pageId}`); + localStorage.setItem("PageLanding", setting.pageId); + localStorage.setItem( + "defaultmenuid", + setting.menuId + ); + localStorage.setItem("pageType", setting.pageType); + if (process.env.REACT_APP_ENABLE_SUBSCRIPTION) { + const LocalUserDetails = { + name: results[0].get("Name"), + email: results[0].get("Email"), + phone: results[0].get("Phone"), + company: results[0].get("Company") + }; + localStorage.setItem( + "userDetails", + JSON.stringify(LocalUserDetails) + ); + const billingDate = + results[0].get("Next_billing_date") && + results[0].get("Next_billing_date"); + if (billingDate) { + if (billingDate > new Date()) { + localStorage.removeItem("userDetails"); + // Redirect to the appropriate URL after successful login + navigate(redirectUrl); + } else { + navigate(`/subscription`); + } + } else { + navigate(`/subscription`); + } + } else { + // Redirect to the appropriate URL after successful login + navigate(redirectUrl); + } } } else { - localStorage.setItem("PageLanding", item.pageId); - localStorage.setItem("defaultmenuid", item.menuId); - localStorage.setItem("pageType", item.pageType); - navigate(`/${item.pageType}/${item.pageId}`); + localStorage.setItem("PageLanding", setting.pageId); + localStorage.setItem("defaultmenuid", setting.menuId); + localStorage.setItem("pageType", setting.pageType); + setState({ ...state, loading: false }); + if (process.env.REACT_APP_ENABLE_SUBSCRIPTION) { + const LocalUserDetails = { + name: results[0].get("Name"), + email: results[0].get("Email"), + phone: results[0].get("Phone") + // company: results.get("Company"), + }; + localStorage.setItem( + "userDetails", + JSON.stringify(LocalUserDetails) + ); + const billingDate = ""; + if (billingDate) { + navigate(`/subscription`); + } + } else { + // Redirect to the appropriate URL after successful login + navigate(redirectUrl); + } } }, (error) => {