DashboardLayout
This commit is contained in:
@@ -31,7 +31,6 @@ export function UserProvider({ children }: { children: ReactNode }) {
|
||||
}, [tokens]);
|
||||
|
||||
useEffect(() => {
|
||||
console.log(user)
|
||||
if (user) {
|
||||
localStorage.setItem('user', JSON.stringify(user));
|
||||
} else {
|
||||
@@ -48,21 +47,27 @@ export function UserProvider({ children }: { children: ReactNode }) {
|
||||
|
||||
response = await getFetch(`/users/auth/users/${(response.body as Account).id}/`);
|
||||
|
||||
if (response.success){
|
||||
return response.body as Account
|
||||
if (!response.success){
|
||||
return undefined;
|
||||
}
|
||||
// if (response?.success && response.body) {
|
||||
// return response.body as Account; // Возвращаем данные о пользователе
|
||||
// }
|
||||
return undefined;
|
||||
const account = response.body as Account ;
|
||||
|
||||
if (account.role){
|
||||
response = await getFetch(`/users/roles/${account.role}/`);
|
||||
if (response.success){
|
||||
account.roleTitle = (response.body as {name:string}).name;
|
||||
}
|
||||
}
|
||||
return account;
|
||||
};
|
||||
|
||||
const handleLogin = async (credentials: TokenObtainPair) => {
|
||||
const tokens = await apiLogin(credentials);
|
||||
if (tokens) {
|
||||
setTokens(tokens);
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
const handleLogout = () => {
|
||||
@@ -70,25 +75,26 @@ export function UserProvider({ children }: { children: ReactNode }) {
|
||||
setTokens(undefined);
|
||||
};
|
||||
|
||||
const validateToken = async () => {
|
||||
if (tokens?.access) {
|
||||
const isValid = await verifyToken({ token: tokens.access });
|
||||
if (!isValid && tokens.refresh) {
|
||||
const newTokens = await refreshToken({ refresh: tokens.refresh });
|
||||
if (newTokens) {
|
||||
setTokens(newTokens);
|
||||
} else {
|
||||
handleLogout();
|
||||
}
|
||||
} else if (!isValid) {
|
||||
handleLogout();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
async function validateToken() {
|
||||
if (tokens?.access) {
|
||||
const isValid = await verifyToken({ token: tokens.access });
|
||||
if (!isValid && tokens.refresh) {
|
||||
const newTokens = await refreshToken({ refresh: tokens.refresh });
|
||||
if (newTokens) {
|
||||
setTokens(newTokens);
|
||||
} else {
|
||||
handleLogout();
|
||||
}
|
||||
} else if (!isValid) {
|
||||
handleLogout();
|
||||
}
|
||||
}
|
||||
}
|
||||
validateToken().then();
|
||||
}, []);
|
||||
}, [tokens]);
|
||||
|
||||
return (
|
||||
<UserContext.Provider value={{ user, login: handleLogin, logout: handleLogout }}>
|
||||
|
||||
Reference in New Issue
Block a user