diff --git a/backend/users/views.py b/backend/users/views.py index af201b7..9d022e3 100644 --- a/backend/users/views.py +++ b/backend/users/views.py @@ -7,6 +7,8 @@ from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.parsers import MultiPartParser +from rest_framework_simplejwt.tokens import RefreshToken + from users.serializers import CustomUserSerializer, UpdateProfileSerializer from users.models import CustomUser @@ -25,7 +27,9 @@ class CustomUserCreate(APIView): if serializer.is_valid(): user = serializer.save() if user: - return Response(serializer.data, status=status.HTTP_201_CREATED) + refresh = RefreshToken.for_user(user) + return Response(data={'access_token': str(refresh.access_token), 'refresh_token': str(refresh),}, + status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 619149d..a917ca5 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -46,9 +46,7 @@ const App = () => { setIsAuthenticated(false); } }) - .catch((error) => { - console.error("Error checking login status:", error.message); - }); + .catch((error) => {}); }; checkLoginStatus(); diff --git a/frontend/src/api/AuthenticationApi.jsx b/frontend/src/api/AuthenticationApi.jsx index 79456a6..e029404 100644 --- a/frontend/src/api/AuthenticationApi.jsx +++ b/frontend/src/api/AuthenticationApi.jsx @@ -34,10 +34,10 @@ export const googleLogin = async (token) => { export const createUser = async (formData) => { try { axios.defaults.withCredentials = true; - const response = axios.post(`${baseURL}user/create/`, formData); - // const response = await axiosInstance.post('/user/create/', formData); + const response = await axios.post(`${baseURL}user/create/`, formData); return response.data; } catch (e) { - console.log(e); + console.error("Error in createUser function:", e); + throw e; } }; diff --git a/frontend/src/api/AxiosConfig.jsx b/frontend/src/api/AxiosConfig.jsx index f2de1b7..29ed6c7 100644 --- a/frontend/src/api/AxiosConfig.jsx +++ b/frontend/src/api/AxiosConfig.jsx @@ -13,6 +13,14 @@ export const axiosInstance = axios.create({ }, }); +axiosInstance.interceptors.request.use((config) => { + const access_token = localStorage.getItem("access_token"); + if (access_token) { + config.headers.Authorization = `Bearer ${access_token}`; + } + return config; +}); + // handling token refresh on 401 Unauthorized errors axiosInstance.interceptors.response.use( (response) => response, diff --git a/frontend/src/components/authentication/SignUpPage.jsx b/frontend/src/components/authentication/SignUpPage.jsx index 1019779..08628e8 100644 --- a/frontend/src/components/authentication/SignUpPage.jsx +++ b/frontend/src/components/authentication/SignUpPage.jsx @@ -23,20 +23,33 @@ export function SignUp() { setIsSubmitting(true); setError(null); + const delay = (ms) => new Promise((res) => setTimeout(res, ms)); + try { - createUser(formData); + const data = await createUser(formData); + localStorage.setItem("access_token", data.access_token); + localStorage.setItem("refresh_token", data.refresh_token); + await delay(200); + setIsAuthenticated(true); + Navigate("/"); } catch (error) { console.error("Error creating user:", error); setError("Registration failed. Please try again."); } finally { setIsSubmitting(false); } - Navigate("/login"); }; - const handleChange = (e) => { - const { name, value } = e.target; - setFormData({ ...formData, [name]: value }); + const handleEmailChange = (e) => { + setFormData({ ...formData, email: e.target.value }); + }; + + const handleUsernameChange = (e) => { + setFormData({ ...formData, username: e.target.value }); + }; + + const handlePasswordChange = (e) => { + setFormData({ ...formData, password: e.target.value }); }; const googleLoginImplicit = useGoogleLogin({ @@ -51,7 +64,7 @@ export function SignUp() { localStorage.setItem("access_token", access_token); localStorage.setItem("refresh_token", refresh_token); setIsAuthenticated(true); - Navigate("/"); + Navigate("/profile"); } } catch (error) { console.error("Error with the POST request:", error); @@ -63,12 +76,9 @@ export function SignUp() { return (