|
1 | 1 | import { config, routes } from "../config/index"; |
2 | 2 | import RouterClient from "../routerClients/RouterClient"; |
3 | 3 |
|
| 4 | +const redirectToLogin = (routerClient: RouterClient) => { |
| 5 | + const loginUrl = new URL( |
| 6 | + `${config.redirectURL}${config.apiPath}/${routes.login}`, |
| 7 | + ); |
| 8 | + const state = routerClient.getSearchParam("state"); |
| 9 | + if (state) { |
| 10 | + loginUrl.searchParams.set("state", state); |
| 11 | + } |
| 12 | + return routerClient.redirect(loginUrl.toString()); |
| 13 | +}; |
| 14 | + |
4 | 15 | export const callback = async (routerClient: RouterClient) => { |
5 | 16 | const errorParam = routerClient.getSearchParam("error"); |
6 | 17 | if (errorParam) { |
7 | 18 | if (errorParam?.toLowerCase() === "login_link_expired") { |
8 | 19 | const reauthState = routerClient.getSearchParam("reauth_state"); |
9 | 20 | if (reauthState) { |
10 | | - const decodedAuthState = atob(reauthState); |
11 | 21 | try { |
12 | | - const reauthState = JSON.parse(decodedAuthState); |
13 | | - if (reauthState) { |
14 | | - const urlParams = new URLSearchParams(reauthState); |
| 22 | + const decodedAuthState = atob(reauthState); |
| 23 | + const parsedReauthState = JSON.parse(decodedAuthState); |
| 24 | + if (parsedReauthState) { |
| 25 | + const urlParams = new URLSearchParams(parsedReauthState); |
15 | 26 | const loginRoute = new URL( |
16 | 27 | `${config.redirectURL}${config.apiPath}/${routes.login}`, |
17 | 28 | ); |
18 | 29 | loginRoute.search = urlParams.toString(); |
19 | 30 | return routerClient.redirect(loginRoute.toString()); |
20 | 31 | } |
21 | | - } catch (ex) { |
22 | | - throw new Error( |
23 | | - ex instanceof Error |
24 | | - ? ex.message |
25 | | - : "Unknown Error parsing reauth state", |
26 | | - ); |
| 32 | + } catch { |
| 33 | + return redirectToLogin(routerClient); |
27 | 34 | } |
28 | 35 | } |
29 | | - return; |
| 36 | + return redirectToLogin(routerClient); |
30 | 37 | } |
31 | | - return; |
| 38 | + return redirectToLogin(routerClient); |
32 | 39 | } |
33 | 40 |
|
34 | 41 | const postLoginRedirectURLFromMemory = |
|
0 commit comments