/
AuthenticationRouter.js
83 lines (81 loc) · 2.9 KB
/
AuthenticationRouter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/**
* Copyright (c) 2020, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
import React, { useCallback } from 'react';
import { Navigate, Route, Routes } from 'react-router-dom';
import SignInCallbackHandler from '../SignInCallbackHandler';
import {
handleSigninCallback,
handleSilentRenewCallback,
login,
} from '../../utils/AuthService';
import SilentRenewCallbackHandler from '../SilentRenewCallbackHandler';
import Login from '../Login';
const AuthenticationRouter = ({
userManager,
signInCallbackError,
dispatch,
navigate,
location,
}) => {
const handleSigninCallbackClosure = useCallback(
() => handleSigninCallback(dispatch, navigate, userManager.instance),
[dispatch, navigate, userManager.instance]
);
const handleSilentRenewCallbackClosure = useCallback(
() => handleSilentRenewCallback(userManager.instance),
[userManager.instance]
);
return (
<React.Fragment>
{userManager.error !== null && (
<h1>Error : Getting userManager; {userManager.error}</h1>
)}
{signInCallbackError !== null && (
<h1>
Error : SignIn Callback Error; {signInCallbackError.message}
</h1>
)}
<Routes>
<Route
path="sign-in-callback"
element={
<SignInCallbackHandler
userManager={userManager.instance}
handleSignInCallback={handleSigninCallbackClosure}
/>
}
/>
<Route
path="silent-renew-callback"
element={
<SilentRenewCallbackHandler
userManager={userManager.instance}
handleSilentRenewCallback={
handleSilentRenewCallbackClosure
}
/>
}
/>
<Route path="logout-callback" element={<Navigate to="/" />} />
<Route
path="*"
element={
userManager.error === null && (
<Login
disabled={userManager.instance === null}
onLoginClick={() =>
login(location, userManager.instance)
}
/>
)
}
/>
</Routes>
</React.Fragment>
);
};
export default AuthenticationRouter;