Přesun autentizace na server

This commit is contained in:
2023-06-28 07:24:26 +02:00
parent 47fbe4173d
commit e81c7d09a3
15 changed files with 297 additions and 134 deletions

View File

@@ -1,12 +1,12 @@
import React, { ReactNode, useContext, useState } from "react"
import { useEffect } from "react"
const LOGIN_KEY = 'login';
import { useJwt } from "react-jwt";
import { deleteToken, getToken, storeToken } from "../Utils";
export type AuthContextProps = {
login?: string,
setLogin: (name: string) => void,
clearLogin: () => void,
setToken: (name: string) => void,
logout: () => void,
}
type ContextProps = {
@@ -26,33 +26,33 @@ export const useAuth = () => {
function useProvideAuth(): AuthContextProps {
const [loginName, setLoginName] = useState<string | undefined>();
const [token, setToken] = useState<string | null>(getToken());
const { decodedToken } = useJwt(token || '');
useEffect(() => {
const login = localStorage.getItem(LOGIN_KEY);
if (login) {
setLogin(login);
}
}, [])
useEffect(() => {
if (loginName) {
localStorage.setItem(LOGIN_KEY, loginName)
if (token && token.length > 0) {
storeToken(token);
} else {
localStorage.removeItem(LOGIN_KEY);
deleteToken();
}
}, [loginName]);
}, [token]);
function setLogin(login: string) {
setLoginName(login);
}
useEffect(() => {
if (decodedToken) {
setLoginName((decodedToken as any).login);
} else {
setLoginName(undefined);
}
}, [decodedToken]);
function clearLogin() {
function logout() {
setToken(null);
setLoginName(undefined);
}
return {
login: loginName,
setLogin,
clearLogin
setToken,
logout,
}
}