Index: backend/src/main/java/com/tradingmk/backend/service/AuthenticationService.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/service/AuthenticationService.java	(revision 76c503fa4a6cfad0fb4103d0e7d2100761d7d49c)
+++ backend/src/main/java/com/tradingmk/backend/service/AuthenticationService.java	(revision 8ddd7f92e94d6933e7e0b94a6fcb8d77b10bad1d)
@@ -45,5 +45,5 @@
         authenticationManager.authenticate(
                 new UsernamePasswordAuthenticationToken(
-                        request.getEmail(),
+                        request.getUsername(),
                         request.getPassword()
                 )
Index: frontend/package-lock.json
===================================================================
--- frontend/package-lock.json	(revision 76c503fa4a6cfad0fb4103d0e7d2100761d7d49c)
+++ frontend/package-lock.json	(revision 8ddd7f92e94d6933e7e0b94a6fcb8d77b10bad1d)
@@ -11,4 +11,5 @@
         "@stomp/stompjs": "^7.1.1",
         "@tailwindcss/vite": "^4.1.10",
+        "jwt-decode": "^4.0.0",
         "lucide-react": "^0.516.0",
         "react": "^19.1.0",
@@ -2924,4 +2925,13 @@
       }
     },
+    "node_modules/jwt-decode": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz",
+      "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      }
+    },
     "node_modules/keyv": {
       "version": "4.5.4",
Index: frontend/package.json
===================================================================
--- frontend/package.json	(revision 76c503fa4a6cfad0fb4103d0e7d2100761d7d49c)
+++ frontend/package.json	(revision 8ddd7f92e94d6933e7e0b94a6fcb8d77b10bad1d)
@@ -13,4 +13,5 @@
     "@stomp/stompjs": "^7.1.1",
     "@tailwindcss/vite": "^4.1.10",
+    "jwt-decode": "^4.0.0",
     "lucide-react": "^0.516.0",
     "react": "^19.1.0",
Index: frontend/src/pages/Menu/Menu.jsx
===================================================================
--- frontend/src/pages/Menu/Menu.jsx	(revision 76c503fa4a6cfad0fb4103d0e7d2100761d7d49c)
+++ frontend/src/pages/Menu/Menu.jsx	(revision 8ddd7f92e94d6933e7e0b94a6fcb8d77b10bad1d)
@@ -4,9 +4,18 @@
 import defaultPic from '../../assets/images/default-profile.png'
 import { ChevronDown, LogOut, Settings } from 'lucide-react';
+import { jwtDecode } from 'jwt-decode';
 
 const Menu = () => {
     const [open, setOpen] = useState(false);
     const navigate = useNavigate();
-    const username = localStorage.getItem('username');
+    const token = localStorage.getItem('accessToken');
+    let username = '';
+
+    if (token) {
+        const decoded = jwtDecode(token);
+        username = decoded.sub; //username
+    }
+
+    console.log(username);
 
     const toggleDropdown = () => setOpen(!open);
Index: frontend/src/pages/Signup-Login/LoginPage.jsx
===================================================================
--- frontend/src/pages/Signup-Login/LoginPage.jsx	(revision 76c503fa4a6cfad0fb4103d0e7d2100761d7d49c)
+++ frontend/src/pages/Signup-Login/LoginPage.jsx	(revision 8ddd7f92e94d6933e7e0b94a6fcb8d77b10bad1d)
@@ -12,15 +12,28 @@
         const response = await fetch('http://localhost:8080/api/auth/authenticate', {
             method: 'POST',
-            headers: {'Content-Type': 'application/json'},
-            body: JSON.stringify({username, password})
+            headers: { 'Content-Type': 'application/json' },
+            body: JSON.stringify({ username, password })
         });
 
-        if (response.ok) {
-            navigate('/dashboard');
-        } else {
+        if (!response.ok) {
             throw new Error(await response.text());
         }
 
-        return response.text();
+        const data = await response.json();
+        const token = data.token;
+
+
+        localStorage.setItem('accessToken', token);
+
+        //decode
+        try {
+            const { jwtDecode } = await import('jwt-decode');
+            const decoded = jwtDecode(token);
+            localStorage.setItem('username', decoded.sub); // sub contains usernamere
+        } catch (err) {
+            console.error('Failed to decode token:', err);
+        }
+
+        return "Login successful!";
     };
 
@@ -33,4 +46,5 @@
             const message = await login();
             setSuccess(message);
+            navigate('/dashboard');
         } catch (err) {
             setError(err.message || 'Login failed');
Index: frontend/src/pages/Signup-Login/SignupPage.jsx
===================================================================
--- frontend/src/pages/Signup-Login/SignupPage.jsx	(revision 76c503fa4a6cfad0fb4103d0e7d2100761d7d49c)
+++ frontend/src/pages/Signup-Login/SignupPage.jsx	(revision 8ddd7f92e94d6933e7e0b94a6fcb8d77b10bad1d)
@@ -17,13 +17,25 @@
         });
 
-        if (response.ok) {
-            navigate('/dashboard');
-        }else{
+        if (!response.ok) {
             throw new Error(await response.text());
         }
 
-        return response.text();
+        const data = await response.json();
+        const token = data.token;
+
+
+        localStorage.setItem('accessToken', token);
+
+
+        try {
+            const { jwtDecode } = await import('jwt-decode');
+            const decoded = jwtDecode(token);
+            localStorage.setItem('username', decoded.sub);
+        } catch (err) {
+            console.error('failed to decode token:   ', err);
+        }
+
+        return "signup successfull";
     };
-
     const handleSignup = async (e) => {
         e.preventDefault();
