This commit is contained in:
Maciek Głowacki
2020-12-29 01:06:39 +01:00
parent 56b7b8ef88
commit bbba8618cb
8 changed files with 69 additions and 36 deletions

View File

@ -6,6 +6,7 @@ export interface CASContext {
user: LoggedUser | undefined;
logout: () => void;
token: string | undefined;
refreshToken: string | undefined;
}
export const CASContext = createContext<CASContext | undefined>(undefined);
@ -17,6 +18,7 @@ export interface CASProviderProps {
export const CASProvider = ({ children }: CASProviderProps) => {
const [user, setUser] = useState<LoggedUser>();
const [token, setToken] = useState<string | undefined>();
const [refreshToken, setRefreshToken] = useState<string | undefined>();
useEffect(() => {
const login = async () => {
const urlParams = new URLSearchParams(window.location.search);
@ -26,15 +28,19 @@ export const CASProvider = ({ children }: CASProviderProps) => {
}
try {
if (!localStorage.getItem('userToken')) {
const { data: user } = await axiosInstance.get<LoggedUser & { token: string }>(
const { data: user } = await axiosInstance.get<LoggedUser & { token: string; refreshToken: string }>(
`${process.env.REACT_APP_API_URL}/token?ticket=${ticket}`,
);
console.log('token response: ', user);
setUser({ authorityRole: user.authorityRole, email: user.email, id: user.id });
localStorage.setItem('userToken', user.token);
localStorage.setItem('userPrivilige', user.authorityRole);
localStorage.setItem('refreshToken', user.refreshToken);
}
const token = localStorage.getItem('userToken');
const refreshToken = localStorage.getItem('refreshToken');
token && setToken(token);
refreshToken && setRefreshToken(refreshToken);
} catch (e) {
console.log(e);
}
@ -44,6 +50,7 @@ export const CASProvider = ({ children }: CASProviderProps) => {
function logout() {
localStorage.removeItem('userToken');
localStorage.removeItem('refreshToken');
localStorage.removeItem('userPrivilige');
redirectToCASLogoutService();
}
@ -56,5 +63,5 @@ export const CASProvider = ({ children }: CASProviderProps) => {
window.location.replace(`https://cas.amu.edu.pl/cas/login?service=${window.origin}&locale=pl`);
}
return <CASContext.Provider value={{ user, token, logout }}>{children}</CASContext.Provider>;
return <CASContext.Provider value={{ user, token, refreshToken, logout }}>{children}</CASContext.Provider>;
};