diff --git a/app/loginPage/page.tsx b/app/loginPage/page.tsx
new file mode 100644
index 0000000..cdc66b2
--- /dev/null
+++ b/app/loginPage/page.tsx
@@ -0,0 +1,82 @@
+"use client";
+import { useEffect, useState } from "react";
+import { GoogleOAuthProvider, useGoogleLogin, googleLogout, TokenResponse} from "@react-oauth/google";
+import { jwtDecode } from "jwt-decode";
+import axios from "axios";
+
+interface User {
+ name: string;
+ email: string;
+ picture: string;
+}
+const LoginPage = () => {
+ return(
+
+
+
+ )
+}
+
+const LoginComponent = () => {
+ const [user, setUser] = useState(null);
+
+
+
+ useEffect(() => {
+ console.log("LoginPage component mounted");
+ }, []);
+
+ const handleLoginSuccess = (tokenResponse: any) => {
+ if ('code' in tokenResponse) {
+ // Handle authorization code flow
+ console.log('Authorization Code:', tokenResponse.code);
+ // Exchange code for tokens here
+ } else {
+ // Handle implicit flow
+ console.log('Token Received:', tokenResponse.access_token);
+ const decoded: User = jwtDecode(tokenResponse.id_token);
+ setUser({
+ name: decoded.name,
+ email: decoded.email,
+ picture: decoded.picture
+ });
+ // Send token to backend if necessary
+ axios.post('http://localhost:8000/myapi/users/google-oauth2/', { token: tokenResponse.access_token })
+ .then(res => console.log('Backend login successful', res))
+ .catch(err => console.error('Backend login failed', err));
+ }
+
+ };
+ const login = useGoogleLogin({
+ flow: "auth-code",
+
+ onSuccess: (tokenResponse) => handleLoginSuccess,
+ onError: (errorResponse) => console.error('Login Failed', errorResponse),
+ });
+ const handleLogout = () => {
+ googleLogout();
+ setUser(null); // Clears the user state, effectively logging out the user
+ console.log('Logged out successfully');
+ };
+ return (
+
+
+ {user && (
+
+
![User profile]({user.picture})
+
Welcome, {user.name} - {user.email}
+
+
+ )}
+
+
+
+ );
+};
+
+export default LoginPage;
+
diff --git a/app/page.tsx b/app/page.tsx
index ee57510..c675f1c 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -14,6 +14,7 @@ interface Food {
extra_data: Array;
}
+
interface subCategory {
name: string;
foods: Array;