use the new session management

This commit is contained in:
Sven Czarnian
2022-11-04 21:04:45 +01:00
parent acea193aa0
commit fc05ae4546
8 changed files with 44 additions and 60 deletions

View File

@@ -3,10 +3,12 @@ import { useNavigate } from 'react-router-dom';
import { Auth } from '../services';
import { User } from '../types';
const AuthContext = createContext<{
auth: { valid: boolean; user: User };
setAuth: Dispatch<SetStateAction<{ valid: boolean; user: User }>>;
}>({ auth: {
export interface IAuthState {
valid: boolean,
user: User,
};
const InitialAuthState: IAuthState = {
valid: false,
user: {
vatsimId: '',
@@ -14,33 +16,29 @@ const AuthContext = createContext<{
administrator: false,
airportConfigurationAccess: [],
},
}, setAuth: () => {} });
};
const AuthContext = createContext<{
auth: IAuthState;
setAuth: Dispatch<SetStateAction<IAuthState>>;
resetAuth: () => void;
}>({ auth: InitialAuthState, setAuth: () => {}, resetAuth: () => {} });
export const AuthProvider = ({ children }: { children: any }) => {
const [auth, setAuth] = useState<{ valid: boolean; user: User }>({
valid: false,
user: {
vatsimId: '',
fullName: '',
administrator: false,
airportConfigurationAccess: [],
},
});
const [auth, setAuth] = useState<IAuthState>(InitialAuthState);
const navigate = useNavigate();
const resetAuth = () => setAuth(InitialAuthState);
useEffect(() => {
Auth.user().then((user) => {
setAuth({ valid: true, user });
if (user !== undefined) {
setAuth({ valid: true, user });
} else {
setAuth(InitialAuthState);
}
}).catch(() => {
setAuth({
valid: false,
user: {
vatsimId: '',
fullName: '',
administrator: false,
airportConfigurationAccess: [],
},
});
setAuth(InitialAuthState);
navigate('/');
});
// eslint-disable-next-line react-hooks/exhaustive-deps
@@ -48,7 +46,7 @@ export const AuthProvider = ({ children }: { children: any }) => {
return (
<>
<AuthContext.Provider value={{ auth, setAuth }}>
<AuthContext.Provider value={{ auth, setAuth, resetAuth }}>
{children}
</AuthContext.Provider>
</>