Index: backend/pom.xml
===================================================================
--- backend/pom.xml	(revision 5da38e0479eef6bdb882e7ecd8ab13ecc14f96e3)
+++ backend/pom.xml	(revision 00cbc3569522a813a57d38d549fca10107fec9e3)
@@ -76,4 +76,9 @@
             <artifactId>spring-boot-starter-security</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
 
 
Index: backend/src/main/java/com/tradingmk/backend/config/JwtAuthenticationFilter.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/config/JwtAuthenticationFilter.java	(revision 00cbc3569522a813a57d38d549fca10107fec9e3)
+++ backend/src/main/java/com/tradingmk/backend/config/JwtAuthenticationFilter.java	(revision 00cbc3569522a813a57d38d549fca10107fec9e3)
@@ -0,0 +1,39 @@
+package com.tradingmk.backend.config;
+
+import com.tradingmk.backend.service.UserService;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.springframework.lang.NonNull;
+import org.springframework.stereotype.Component;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+import java.io.IOException;
+
+@Component
+@RequiredArgsConstructor
+public class JwtAuthenticationFilter extends OncePerRequestFilter {
+
+    private final UserService userService;
+
+    @Override
+    protected void doFilterInternal(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull FilterChain filterChain) throws ServletException, IOException {
+        final String authHeader = request.getHeader("Authorization");
+        final String jwt;
+        final String username;
+
+        //implement check
+        if (authHeader == null || !authHeader.startsWith("Bearer ")){
+            filterChain.doFilter(request,response);
+            return;
+        }
+        //extract token from header
+        jwt = authHeader.substring(7);
+
+        //extract username
+        username = userService.extractUsername(jwt);
+
+    }
+}
Index: backend/src/main/java/com/tradingmk/backend/model/Role.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/model/Role.java	(revision 00cbc3569522a813a57d38d549fca10107fec9e3)
+++ backend/src/main/java/com/tradingmk/backend/model/Role.java	(revision 00cbc3569522a813a57d38d549fca10107fec9e3)
@@ -0,0 +1,6 @@
+package com.tradingmk.backend.model;
+
+public enum Role {
+    USER,
+    ADMIN
+}
Index: backend/src/main/java/com/tradingmk/backend/model/User.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/model/User.java	(revision 5da38e0479eef6bdb882e7ecd8ab13ecc14f96e3)
+++ backend/src/main/java/com/tradingmk/backend/model/User.java	(revision 00cbc3569522a813a57d38d549fca10107fec9e3)
@@ -2,8 +2,14 @@
 
 import jakarta.persistence.*;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+import java.util.Collection;
+import java.util.List;
 
 @Entity
 @Table(name = "users")
-public class User {
+public class User implements UserDetails {
 
 
@@ -17,4 +23,7 @@
     private Double balance;
     private String email;
+
+    @Enumerated(EnumType.STRING)
+    private Role role;
 
 
@@ -31,8 +40,38 @@
     }
 
+    @Override
+    public boolean isAccountNonExpired() {
+        //return UserDetails.super.isAccountNonExpired();
+        return true;
+    }
+
+    @Override
+    public boolean isAccountNonLocked() {
+        //return UserDetails.super.isAccountNonLocked();
+        return true;
+    }
+
+    @Override
+    public boolean isCredentialsNonExpired() {
+        //return UserDetails.super.isCredentialsNonExpired();
+        return true;
+    }
+
+    @Override
+    public boolean isEnabled() {
+        //return UserDetails.super.isEnabled();
+        return true;
+    }
+
     public void setUsername(String username) {
         this.username = username;
     }
 
+    @Override
+    public Collection<? extends GrantedAuthority> getAuthorities() {
+        return List.of(new SimpleGrantedAuthority(role.name()));
+    }
+
+    @Override
     public String getPassword() {
         return password;
Index: backend/src/main/java/com/tradingmk/backend/service/UserService.java
===================================================================
--- backend/src/main/java/com/tradingmk/backend/service/UserService.java	(revision 5da38e0479eef6bdb882e7ecd8ab13ecc14f96e3)
+++ backend/src/main/java/com/tradingmk/backend/service/UserService.java	(revision 00cbc3569522a813a57d38d549fca10107fec9e3)
@@ -29,3 +29,8 @@
                 .orElse(null);
     }
+
+    public String extractUsername(String token) {
+        return null;
+
+    }
 }
