Store refresh token on login

This commit is contained in:
Charles Bochet
2023-04-20 18:46:27 +02:00
parent fe10c0ba7d
commit cd18e952b9
21 changed files with 484 additions and 2 deletions

View File

@ -0,0 +1,17 @@
import { useEffect } from 'react';
import { useSearchParams, useNavigate } from 'react-router-dom';
function Callback() {
const [searchParams] = useSearchParams();
const refreshToken = searchParams.get('refreshToken');
localStorage.setItem('refreshToken', refreshToken || '');
const navigate = useNavigate();
useEffect(() => {
navigate('/');
}, [navigate]);
return <></>;
}
export default Callback;

View File

@ -0,0 +1,17 @@
import { useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
function Login() {
const refreshToken = localStorage.getItem('refreshToken');
const navigate = useNavigate();
useEffect(() => {
if (!refreshToken) {
window.location.href = process.env.REACT_APP_LOGIN_PROVIDER_URL || '';
}
navigate('/');
}, [refreshToken, navigate]);
return <></>;
}
export default Login;

View File

@ -0,0 +1,19 @@
import { MemoryRouter } from 'react-router-dom';
import Callback from '../Callback';
import { ThemeProvider } from '@emotion/react';
import { lightTheme } from '../../../layout/styles/themes';
const component = {
title: 'Callback',
component: Callback,
};
export default component;
export const CallbackDefault = () => (
<ThemeProvider theme={lightTheme}>
<MemoryRouter>
<Callback />
</MemoryRouter>
</ThemeProvider>
);

View File

@ -0,0 +1,19 @@
import { MemoryRouter } from 'react-router-dom';
import Login from '../Login';
import { ThemeProvider } from '@emotion/react';
import { lightTheme } from '../../../layout/styles/themes';
const component = {
title: 'Login',
component: Login,
};
export default component;
export const LoginDefault = () => (
<ThemeProvider theme={lightTheme}>
<MemoryRouter>
<Login />
</MemoryRouter>
</ThemeProvider>
);

View File

@ -0,0 +1,7 @@
import { render } from '@testing-library/react';
import { CallbackDefault } from '../__stories__/Callback.stories';
it('Checks the Callback page render', () => {
render(<CallbackDefault />);
});

View File

@ -0,0 +1,15 @@
import { render } from '@testing-library/react';
import { LoginDefault } from '../__stories__/Login.stories';
const assignMock = jest.fn();
delete window.location;
window.location = { assign: assignMock };
afterEach(() => {
assignMock.mockClear();
});
it('Checks the Login page render', () => {
render(<LoginDefault />);
});