DashboardLayout

This commit is contained in:
Mikan
2025-06-02 18:11:15 +03:00
parent ab10918dc4
commit 054cb63d71
5 changed files with 70 additions and 43 deletions

View File

@@ -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 }}>