From 01017bb36eb0d28dda09e73f7919071709e38d9a Mon Sep 17 00:00:00 2001 From: dimitar Date: Sat, 2 Nov 2024 00:33:52 +0100 Subject: [PATCH] redirect fixed --- frontend/imk/src/components/login/login.jsx | 9 ++- frontend/imk/src/hooks/useAuth.jsx | 41 ++++++------- frontend/imk/src/services/api.js | 65 +-------------------- 3 files changed, 29 insertions(+), 86 deletions(-) diff --git a/frontend/imk/src/components/login/login.jsx b/frontend/imk/src/components/login/login.jsx index dd34108..46b4544 100644 --- a/frontend/imk/src/components/login/login.jsx +++ b/frontend/imk/src/components/login/login.jsx @@ -14,8 +14,13 @@ const Login = () => { setError(''); try { - await login(username, password); // Changed to pass username and password separately - navigate('/dashboard'); + const userData = await login(username, password); + console.log('Login result:', userData); + if (userData?.isAdmin) { + navigate('/admin'); + } else { + navigate('/dashboard'); + } } catch (err) { setError('Invalid credentials'); } diff --git a/frontend/imk/src/hooks/useAuth.jsx b/frontend/imk/src/hooks/useAuth.jsx index 8b7e621..8f1c2d1 100644 --- a/frontend/imk/src/hooks/useAuth.jsx +++ b/frontend/imk/src/hooks/useAuth.jsx @@ -28,40 +28,41 @@ export const AuthProvider = ({ children }) => { fetchUser(); }, []); + // const login = async (username, password) => { + // try { + // const response = await api.post('/auth/login', { username, password }); + // const { access_token, user } = response.data; // Make sure this matches your backend response + + // localStorage.setItem('token', access_token); + // setUser(user); + // return user; + // } catch (error) { + // console.error('Login error:', error); + // throw error; + // } + // }; const login = async (username, password) => { try { const response = await api.post('/auth/login', { username, password }); - const { access_token } = response.data; // Make sure this matches your backend response + console.log('Login response:', response.data); // Debug log + const { access_token } = response.data; localStorage.setItem('token', access_token); - // After setting token, fetch user info + // Fetch user info after login const userResponse = await api.get('/auth/user-info'); - setUser(userResponse.data); + const userData = userResponse.data; - return userResponse.data; + setUser(userData); + return userData; // Return the user data for redirect logic } catch (error) { console.error('Login error:', error); throw error; } }; - // const login = async (username, password) => { // Changed parameters - // try { - // const response = await api.post('/auth/login', { username, password }); - // const { token } = response.data; // Updated to match backend response - // localStorage.setItem('token', token); - - // // Fetch user info after successful login - // const userResponse = await api.get('/auth/user-info'); - // setUser(userResponse.data); - - // return userResponse.data; - // } catch (error) { - // console.error('Login error:', error); - // throw error; - // } - // }; + + const logout = () => { localStorage.removeItem('token'); diff --git a/frontend/imk/src/services/api.js b/frontend/imk/src/services/api.js index 1a5eca0..1f3a14b 100644 --- a/frontend/imk/src/services/api.js +++ b/frontend/imk/src/services/api.js @@ -8,11 +8,7 @@ const api = axios.create({ // withCredentials: true, }); -// const api = axios.create({ -// baseURL: 'http://localhost:3000', -// }); - -// Add a request interceptor +// Add authorization header to all requests api.interceptors.request.use( (config) => { const token = localStorage.getItem('token'); @@ -41,65 +37,6 @@ export const downloadDocument = async (documentId) => { } }; -// Request interceptor -// api.interceptors.request.use((config) => { -// const token = localStorage.getItem('token'); -// if (token) { -// config.headers.Authorization = `Bearer ${token}`; -// } -// return config; -// }); - -// // Response interceptor -// api.interceptors.response.use( -// (response) => response, -// (error) => { -// if (error.response?.status === 401) { -// localStorage.removeItem('token'); -// } -// return Promise.reject(error); -// } -// ); - -// const api = axios.create({ -// baseURL: API_URL, -// withCredentials: true, -// }); - -// api.interceptors.request.use((config) => { -// const token = localStorage.getItem('token'); -// if (token) { -// config.headers.Authorization = `Bearer ${token}`; -// } -// return config; -// }); -// export const createUser = (userData) => api.post('/admin/users', userData); - -// const api = axios.create({ -// baseURL: import.meta.env.VITE_API_URL || 'http://localhost:3000', -// withCredentials: true, -// }); - -// // Request interceptor -// api.interceptors.request.use((config) => { -// const token = localStorage.getItem('token'); -// if (token) { -// config.headers.Authorization = `Bearer ${token}`; -// } -// return config; -// }); - -// // Response interceptor -// api.interceptors.response.use( -// (response) => response, -// (error) => { -// if (error.response?.status === 401) { -// localStorage.removeItem('token'); -// window.location.href = '/login'; -// } -// return Promise.reject(error); -// } -// ); export const createUser = (userData) => { return api.post('/admin/users', { name: userData.name,