Skip to content

Commit e286390

Browse files
Merge branch 'staging' into text-input
2 parents cf88eb2 + 3226e4f commit e286390

29 files changed

+1105
-919
lines changed

apps/OpenSign/src/App.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import ForgetPassword from "./routes/ForgetPassword";
1515
import ChangePassword from "./routes/ChangePassword";
1616
import ReportMicroapp from "./components/ReportMicroapp";
1717
import LoadMf from "./routes/LoadMf";
18+
import ValidateRoute from "./primitives/ValidateRoute";
1819

1920
function App() {
2021
const [isloading, setIsLoading] = useState(true);
@@ -58,8 +59,24 @@ function App() {
5859
) : (
5960
<BrowserRouter>
6061
<Routes>
61-
<Route exact path="/" element={<Login />} />
62-
<Route exact path="/signup" element={<Signup />} />
62+
<Route
63+
exact
64+
path="/"
65+
element={
66+
<ValidateRoute>
67+
<Login />
68+
</ValidateRoute>
69+
}
70+
/>
71+
<Route
72+
exact
73+
path="/signup"
74+
element={
75+
<ValidateRoute>
76+
<Signup />
77+
</ValidateRoute>
78+
}
79+
/>
6380
<Route exact path="/loadmf/:remoteApp/*" element={<LoadMf />} />
6481
<Route exact path="/forgetpassword" element={<ForgetPassword />} />
6582
{process.env.REACT_APP_ENABLE_SUBSCRIPTION && (

apps/OpenSign/src/components/LoginFacebook.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ const LoginFacebook = ({
8686
email: userDetails.Email,
8787
// "passsword":userDetails.Phone,
8888
phone: userDetails.Phone,
89-
role: "contracts_Admin",
89+
role: "contracts_User",
9090
company: userDetails.Company
9191
}
9292
};

apps/OpenSign/src/components/LoginGoogle.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ const GoogleSignInBtn = ({
148148
email: userDetails.Email,
149149
// "passsword":userDetails.Phone,
150150
phone: userDetails.Phone,
151-
role: "contracts_Admin",
151+
role: "contracts_User",
152152
company: userDetails.Company,
153153
jobTitle: userDetails.Destination
154154
}

apps/OpenSign/src/components/fields/CreateFolder.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,15 @@ const CreateFolder = ({ parentFolderId, onSuccess, folderCls }) => {
7474
template.set("CreatedBy", Parse.User.createWithoutData(currentUser.id));
7575
const res = await template.save();
7676
if (res) {
77+
setAlert({
78+
type: "success",
79+
message: "Folder created successfully!"
80+
});
81+
setIsAlert(true);
82+
setTimeout(() => {
83+
setIsAlert(false);
84+
}, 1000);
7785
if (onSuccess) {
78-
setAlert({
79-
type: "success",
80-
message: "Folder created successfully!"
81-
});
82-
setIsAlert(true);
83-
setTimeout(() => {
84-
setIsAlert(false);
85-
}, 1000);
8686
onSuccess(res);
8787
}
8888
}

apps/OpenSign/src/components/fields/SelectFolder.js

Lines changed: 1 addition & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ const SelectFolder = ({ required, onSuccess, folderCls }) => {
135135
} else {
136136
fetchFolder();
137137
}
138+
handleCreate();
138139
};
139140
return (
140141
<div className="text-xs mt-2 ">
@@ -253,101 +254,6 @@ const SelectFolder = ({ required, onSuccess, folderCls }) => {
253254
</div>
254255
</div>
255256
</ModalUi>
256-
{/* {isOpen && (
257-
<div
258-
className={`fixed z-40 top-20 left-1/2 transform -translate-x-1/2 border-[1px] text-sm bg-white rounded `}
259-
>
260-
<div className="flex justify-between items-center py-[.75rem] px-[1.25rem] bg-[#f5f5f5]">
261-
<div className="font-semibold text-lg text-black">
262-
Select Folder
263-
</div>
264-
<div
265-
onClick={handleCancel}
266-
className="px-2 py-1 border-[1px] border-[#8a8a8a] bg-white rounded cursor-pointer"
267-
>
268-
<i className="fa-solid fa-xmark"></i>
269-
</div>
270-
</div>
271-
<hr />
272-
<div className="w-full min-w-[300px] md:min-w-[500px] px-3">
273-
<div className="py-2 text-[#ac4848] text-[14px] font-[500]">
274-
<span
275-
className="cursor-pointer"
276-
title="Root"
277-
onClick={(e) => removeTabListItem(e)}
278-
>
279-
Root /{" "}
280-
</span>
281-
{tabList &&
282-
tabList.map((tab, i) => (
283-
<React.Fragment key={`${tab.objectId}-${i}`}>
284-
<span
285-
className="cursor-pointer"
286-
title={tab.Name}
287-
onClick={(e) => removeTabListItem(e, i)}
288-
>
289-
{tab.Name}
290-
</span>
291-
{" / "}
292-
</React.Fragment>
293-
))}
294-
<hr />
295-
</div>
296-
<div className="mt-2 mb-3">
297-
{!isAdd &&
298-
folderList.length > 0 &&
299-
folderList.map((folder) => (
300-
<div
301-
key={folder.Name}
302-
className="border-[1px] border-[#8a8a8a] px-2 py-2 mb-2 cursor-pointer"
303-
onClick={() => handleSelect(folder)}
304-
>
305-
<div className="flex items-center gap-2">
306-
<i
307-
className="fa fa-folder text-[#33bbff] text-[1.4rem]"
308-
aria-hidden="true"
309-
></i>
310-
<span className="font-semibold">{folder.Name}</span>
311-
</div>
312-
</div>
313-
))}
314-
{isAdd && (
315-
<CreateFolder
316-
parentFolderId={clickFolder && clickFolder.ObjectId}
317-
folderCls={folderCls}
318-
onSuccess={handleAddFolder}
319-
/>
320-
)}
321-
{isLoader && (
322-
<div className="flex justify-center">
323-
<i className="fa-solid fa-spinner fa-spin-pulse text-[30px]"></i>
324-
</div>
325-
)}
326-
</div>
327-
</div>
328-
<hr />
329-
<div className="flex justify-between items-center py-[.75rem] px-[1.25rem]">
330-
<div
331-
className="text-[30px] cursor-pointer text-[#33bbff]"
332-
title="Save Here"
333-
onClick={handleCreate}
334-
>
335-
{isAdd ? (
336-
<i className="fa-solid fa-arrow-left" aria-hidden="true"></i>
337-
) : (
338-
<i className="fa-solid fa-square-plus" aria-hidden="true"></i>
339-
)}
340-
</div>
341-
<div
342-
className="text-[30px] cursor-pointer"
343-
title="Save Here"
344-
onClick={handleSubmit}
345-
>
346-
<i className="fas fa-save" aria-hidden="true"></i>
347-
</div>
348-
</div>
349-
</div>
350-
)} */}
351257
</div>
352258
);
353259
};

apps/OpenSign/src/layout/HomeLayout.js

Lines changed: 73 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,35 @@ import Tour from "reactour";
77
import axios from "axios";
88
import { useSelector } from "react-redux";
99
import Parse from "parse";
10+
import ModalUi from "../primitives/ModalUi";
11+
import { useNavigate } from "react-router-dom";
12+
1013
const HomeLayout = ({ children }) => {
14+
const navigate = useNavigate();
1115
const { width } = useWindowSize();
1216
const [isOpen, setIsOpen] = useState(true);
1317
const arr = useSelector((state) => state.TourSteps);
18+
const [isUserValid, setIsUserValid] = useState(true);
19+
20+
useEffect(() => {
21+
(async () => {
22+
try {
23+
// Use the session token to validate the user
24+
const userQuery = new Parse.Query(Parse.User);
25+
const user = await userQuery.get(Parse.User.current().id, {
26+
sessionToken: localStorage.getItem("accesstoken")
27+
});
28+
if (user) {
29+
setIsUserValid(true);
30+
} else {
31+
setIsUserValid(false);
32+
}
33+
} catch (error) {
34+
// Session token is invalid or there was an error
35+
setIsUserValid(false);
36+
}
37+
})();
38+
}, []);
1439

1540
// reactour state
1641
const [isCloseBtn, setIsCloseBtn] = useState(true);
@@ -19,7 +44,7 @@ const HomeLayout = ({ children }) => {
1944
const [tourConfigs, setTourConfigs] = useState([]);
2045

2146
const showSidebar = () => {
22-
setIsOpen(value => !value);
47+
setIsOpen((value) => !value);
2348
};
2449
useEffect(() => {
2550
if (width && width <= 768) {
@@ -28,9 +53,7 @@ const HomeLayout = ({ children }) => {
2853
}, [width]);
2954

3055
useEffect(() => {
31-
if (localStorage.getItem("domain") === "sign" && arr && arr.length > 0) {
32-
handleDynamicSteps();
33-
} else if (
56+
if (
3457
localStorage.getItem("domain") === "contracts" &&
3558
arr &&
3659
arr.length > 0
@@ -153,32 +176,59 @@ const HomeLayout = ({ children }) => {
153176
setIsOpen(false);
154177
}
155178
};
179+
180+
const handleLoginBtn = () => {
181+
try {
182+
Parse.User.logOut();
183+
} catch (err) {
184+
console.log("err ", err);
185+
} finally {
186+
localStorage.removeItem("accesstoken");
187+
navigate("/", { replace: true });
188+
}
189+
};
156190
return (
157191
<div>
158192
<div className="sticky top-0 z-50">
159193
<Header showSidebar={showSidebar} />
160194
</div>
161-
<div className="flex md:flex-row flex-col z-50">
162-
<Sidebar isOpen={isOpen} closeSidebar={closeSidebar} />
195+
{isUserValid ? (
196+
<>
197+
<div className="flex md:flex-row flex-col z-50">
198+
<Sidebar isOpen={isOpen} closeSidebar={closeSidebar} />
163199

164-
<div className="relative h-screen flex flex-col justify-between w-full overflow-y-auto">
165-
<div className="bg-[#eef1f5] p-3">{children}</div>
166-
<div className="z-30">
167-
<Footer />
200+
<div className="relative h-screen flex flex-col justify-between w-full overflow-y-auto">
201+
<div className="bg-[#eef1f5] p-3">{children}</div>
202+
<div className="z-30">
203+
<Footer />
204+
</div>
205+
</div>
168206
</div>
169-
</div>
170-
</div>
171-
<Tour
172-
onRequestClose={closeTour}
173-
steps={tourConfigs}
174-
isOpen={isTour}
175-
closeWithMask={false}
176-
disableKeyboardNavigation={["esc"]}
177-
// disableInteraction={true}
178-
scrollOffset={-100}
179-
rounded={5}
180-
showCloseButton={isCloseBtn}
181-
/>
207+
<Tour
208+
onRequestClose={closeTour}
209+
steps={tourConfigs}
210+
isOpen={isTour}
211+
closeWithMask={false}
212+
disableKeyboardNavigation={["esc"]}
213+
// disableInteraction={true}
214+
scrollOffset={-100}
215+
rounded={5}
216+
showCloseButton={isCloseBtn}
217+
/>
218+
</>
219+
) : (
220+
<ModalUi title={"Session Expired"} isOpen={true} showClose={false}>
221+
<div className="flex flex-col justify-center items-center py-4 md:py-5 gap-5">
222+
<p className="text-xl font-normal">Your session has expired.</p>
223+
<button
224+
onClick={handleLoginBtn}
225+
className="text-base px-3 py-1.5 rounded shadow-md text-white bg-[#1ab6ce]"
226+
>
227+
Login
228+
</button>
229+
</div>
230+
</ModalUi>
231+
)}
182232
</div>
183233
);
184234
};

0 commit comments

Comments
 (0)