source: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/JwtAuthFilter.java@ d8b6c91

main
Last change on this file since d8b6c91 was d8b6c91, checked in by 223021 <daniel.ilievski.2@…>, 7 weeks ago

Initial commit - implementirano registracija i logiranje so Spring Security i JSON Web Token-i vo backend-ot kako i navbar i formi za istoto vo frontend-ot

  • Property mode set to 100644
File size: 2.5 KB
Line 
1package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.config;
2
3import jakarta.servlet.FilterChain;
4import jakarta.servlet.ServletException;
5import jakarta.servlet.http.HttpServletRequest;
6import jakarta.servlet.http.HttpServletResponse;
7import lombok.NonNull;
8import lombok.RequiredArgsConstructor;
9import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JwtService;
10import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
11import org.springframework.security.core.context.SecurityContextHolder;
12import org.springframework.security.core.userdetails.UserDetails;
13import org.springframework.security.core.userdetails.UserDetailsService;
14import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
15import org.springframework.stereotype.Component;
16import org.springframework.web.filter.OncePerRequestFilter;
17
18import java.io.IOException;
19
20@Component
21@RequiredArgsConstructor
22public class JwtAuthFilter extends OncePerRequestFilter {
23
24 private final JwtService jwtService;
25 private final UserDetailsService userDetailsService;
26
27 @Override
28 protected void doFilterInternal(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull FilterChain filterChain) throws ServletException, IOException {
29 final String authHeader = request.getHeader("Authorization");
30
31 if (authHeader == null ||!authHeader.startsWith("Bearer ")) {
32 filterChain.doFilter(request, response);
33 return;
34 }
35
36 final String jwt = authHeader.substring(7);
37 final String userEmail = jwtService.extractUsername(jwt);
38
39 if (userEmail != null && SecurityContextHolder.getContext().getAuthentication() == null) {
40 UserDetails userDetails = userDetailsService.loadUserByUsername(userEmail);
41
42 if(jwtService.isTokenValid(jwt, userDetails)) {
43 UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
44 token.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
45
46// SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
47// securityContext.setAuthentication(token);
48// SecurityContextHolder.setContext(securityContext);
49
50 SecurityContextHolder.getContext().setAuthentication(token);
51 }
52 }
53 filterChain.doFilter(request, response);
54 }
55}
Note: See TracBrowser for help on using the repository browser.