Skip to content

Commit 035c25a

Browse files
committed
Intercept 401 errors, pop up a login window that closes when successful.
1 parent 36175c6 commit 035c25a

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

web-ui/src/api/api.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,24 @@ export const getMyFetch = async () => {
5858
return myFetch;
5959
};
6060

61+
function windowLogin() {
62+
return new Promise((resolve, reject) => {
63+
const authUrl = `${BASE_API_URL}/login?close=true`;
64+
const loginWindow = window.open(authUrl, "Login", "width=500,height=600");
65+
66+
const interval = setInterval(() => {
67+
try {
68+
if (loginWindow.closed) {
69+
clearInterval(interval);
70+
resolve();
71+
}
72+
} catch (err) {
73+
reject(err);
74+
}
75+
}, 1000);
76+
});
77+
}
78+
6179
export const resolve = async payload => {
6280
let { url } = payload;
6381
const { params = null, data = null, ...rest } = payload;
@@ -77,6 +95,11 @@ export const resolve = async payload => {
7795

7896
resolved.payload = await promise;
7997

98+
if (resolved.payload.status == 401) {
99+
await windowLogin();
100+
resolved.payload = await myFetch(url, rest);
101+
}
102+
80103
if (!resolved.payload.ok) {
81104
try {
82105
resolved.error = await resolved.payload.json();

web-ui/src/components/routes/Routes.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,9 @@ export default function Routes() {
203203
<Header title="Manage Kudos"></Header>
204204
<ManageKudosPage />
205205
</Route>
206+
<Route path="/login?close=true">
207+
{window.close()}
208+
</Route>
206209
</Switch>
207210
);
208211
}

0 commit comments

Comments
 (0)