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

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

Implemented backend and frontend CRUD operations for job advertisements

  • Property mode set to 100644
File size: 2.3 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 SecurityContextHolder.getContext().setAuthentication(token);
47 }
48 }
49 filterChain.doFilter(request, response);
50 }
51}
Note: See TracBrowser for help on using the repository browser.