Skip to content

Commit 3f5563a

Browse files
authored
Merge pull request #2851 from objectcomputing/bugfix-2782/unauthorized-errors
Intercept 401 errors, pop up a login window that closes when successful.
2 parents f7b4d4c + 8baffe9 commit 3f5563a

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-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: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import KudosPage from '../../pages/KudosPage';
4242
import ManageKudosPage from '../../pages/ManageKudosPage';
4343
import SkillCategoriesPage from '../../pages/SkillCategoriesPage';
4444
import SkillCategoryEditPage from '../../pages/SkillCategoryEditPage';
45+
import CloseWindow from '../../pages/CloseWindow';
4546

4647
export default function Routes() {
4748
const { state } = useContext(AppContext);
@@ -202,6 +203,9 @@ export default function Routes() {
202203
<Header title="Manage Kudos"></Header>
203204
<ManageKudosPage />
204205
</Route>
206+
<Route path="/login?close=true">
207+
<CloseWindow />
208+
</Route>
205209
</Switch>
206210
);
207211
}

web-ui/src/pages/CloseWindow.jsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
window.close();
2+
3+
export default function CloseWindow() {
4+
return (<></>);
5+
}

0 commit comments

Comments
 (0)