StudentLoanManagement
JwtFilter.java
Go to the documentation of this file.
1package com.student_loan.security;
2
3import jakarta.servlet.FilterChain;
4import jakarta.servlet.ServletException;
5import jakarta.servlet.http.HttpServletRequest;
6import jakarta.servlet.http.HttpServletResponse;
7import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
8import org.springframework.security.core.GrantedAuthority;
9import org.springframework.security.core.authority.SimpleGrantedAuthority;
10import org.springframework.security.core.context.SecurityContextHolder;
11import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
12import org.springframework.web.filter.OncePerRequestFilter;
13
14import java.io.IOException;
15import java.util.List;
16
17public class JwtFilter extends OncePerRequestFilter {
18
19 private final JwtUtil jwtUtil;
20
21 public JwtFilter(JwtUtil jwtUtil) {
22 this.jwtUtil = jwtUtil;
23 }
24
25 @Override
26 public void doFilterInternal(HttpServletRequest request,
27 HttpServletResponse response,
28 FilterChain filterChain) throws ServletException, IOException {
29
30 String authHeader = request.getHeader("Authorization");
31
32 if (authHeader != null && authHeader.startsWith("Bearer ")) {
33 String token = authHeader.substring(7);
34
35 if (jwtUtil.validateToken(token)) {
36 String email = jwtUtil.extractEmail(token);
37
38 List<GrantedAuthority> authorities = List.of(new SimpleGrantedAuthority("ROLE_USER"));
39
40 UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
41 email, null, authorities);
42
43 authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
44
45 SecurityContextHolder.getContext().setAuthentication(authentication);
46 }
47 }
48
49 filterChain.doFilter(request, response);
50 }
51}
void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
String extractEmail(String token)
Definition JwtUtil.java:31
boolean validateToken(String token)
Definition JwtUtil.java:40