fix, jwt filter..
This commit is contained in:
@@ -2,6 +2,7 @@ package com.io.realworld;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.web.servlet.ServletComponentScan;
|
||||
|
||||
@SpringBootApplication
|
||||
public class RealworldApplication {
|
||||
|
||||
@@ -1,53 +1,19 @@
|
||||
package com.io.realworld.domain.aggregate.user.controller;
|
||||
|
||||
import com.io.realworld.domain.aggregate.user.dto.UserSigninRequest;
|
||||
import com.io.realworld.domain.aggregate.user.dto.UserSignupRequest;
|
||||
import com.io.realworld.domain.aggregate.user.dto.UserResponse;
|
||||
import com.io.realworld.domain.aggregate.user.entity.User;
|
||||
import com.io.realworld.domain.aggregate.service.JwtService;
|
||||
import com.io.realworld.domain.aggregate.user.service.UserServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
@RestController
|
||||
@Slf4j
|
||||
@RequestMapping("/api/users")
|
||||
@RequestMapping("/api/user")
|
||||
public class UserController {
|
||||
|
||||
|
||||
private final UserServiceImpl userService;
|
||||
|
||||
private final JwtService jwtService;
|
||||
|
||||
|
||||
public UserController(UserServiceImpl userService, JwtService jwtService) {
|
||||
this.userService = userService;
|
||||
this.jwtService = jwtService;
|
||||
}
|
||||
|
||||
|
||||
@PostMapping(value = "")
|
||||
public UserResponse signup(@Valid @RequestBody UserSignupRequest userSignupRequest) {
|
||||
User user = userService.signup(userSignupRequest);
|
||||
return UserResponse.builder().username(user.getUsername())
|
||||
.email(user.getEmail())
|
||||
.bio(user.getBio())
|
||||
.image(user.getImage())
|
||||
.token(jwtService.createToken(user.getEmail()))
|
||||
.build();
|
||||
}
|
||||
|
||||
@PostMapping(value = "/login")
|
||||
public UserResponse signin(@Valid @RequestBody UserSigninRequest userSigninRequest){
|
||||
User user = userService.signin(userSigninRequest);
|
||||
|
||||
return UserResponse.builder().username(user.getUsername())
|
||||
.email(user.getEmail())
|
||||
.bio(user.getBio())
|
||||
.image(user.getImage())
|
||||
.token(jwtService.createToken(user.getEmail()))
|
||||
.build();
|
||||
@GetMapping
|
||||
public User currentUser(HttpServletRequest request){
|
||||
System.out.println("request = " + request);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.io.realworld.domain.aggregate.user.controller;
|
||||
|
||||
import com.io.realworld.domain.aggregate.user.dto.UserSigninRequest;
|
||||
import com.io.realworld.domain.aggregate.user.dto.UserSignupRequest;
|
||||
import com.io.realworld.domain.aggregate.user.dto.UserResponse;
|
||||
import com.io.realworld.domain.aggregate.user.entity.User;
|
||||
import com.io.realworld.domain.service.JwtService;
|
||||
import com.io.realworld.domain.aggregate.user.service.UserServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/users")
|
||||
public class UsersController {
|
||||
|
||||
|
||||
private final UserServiceImpl userService;
|
||||
|
||||
private final JwtService jwtService;
|
||||
|
||||
|
||||
public UsersController(UserServiceImpl userService, JwtService jwtService) {
|
||||
this.userService = userService;
|
||||
this.jwtService = jwtService;
|
||||
}
|
||||
|
||||
|
||||
@PostMapping(value = "")
|
||||
public UserResponse signup(@Valid @RequestBody UserSignupRequest userSignupRequest) {
|
||||
User user = userService.signup(userSignupRequest);
|
||||
return UserResponse.builder().username(user.getUsername())
|
||||
.email(user.getEmail())
|
||||
.bio(user.getBio())
|
||||
.image(user.getImage())
|
||||
.token(jwtService.createToken(user.getEmail()))
|
||||
.build();
|
||||
}
|
||||
|
||||
@PostMapping(value = "/login")
|
||||
public UserResponse signin(@Valid @RequestBody UserSigninRequest userSigninRequest){
|
||||
User user = userService.signin(userSigninRequest);
|
||||
|
||||
return UserResponse.builder().username(user.getUsername())
|
||||
.email(user.getEmail())
|
||||
.bio(user.getBio())
|
||||
.image(user.getImage())
|
||||
.token(jwtService.createToken(user.getEmail()))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.io.realworld.domain.aggregate.service;
|
||||
package com.io.realworld.domain.service;
|
||||
|
||||
import com.io.realworld.security.jwt.JwtConfig;
|
||||
import com.io.realworld.domain.aggregate.user.entity.User;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.io.realworld.security;
|
||||
|
||||
|
||||
|
||||
import com.io.realworld.security.jwt.JwtAuthenticationFilter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -25,9 +25,10 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic
|
||||
@EnableWebSecurity
|
||||
public class WebConfig {
|
||||
|
||||
private final JwtAuthenticationFilter jwtAuthenticationFilter;
|
||||
|
||||
@Bean
|
||||
PasswordEncoder passwordEncoder() {
|
||||
public PasswordEncoder passwordEncoder() {
|
||||
return new BCryptPasswordEncoder();
|
||||
}
|
||||
|
||||
@@ -36,7 +37,7 @@ public class WebConfig {
|
||||
http.csrf()
|
||||
.disable()
|
||||
.authorizeRequests()
|
||||
.antMatchers("/api/users/**", "/h2-console/**", "/**").permitAll()
|
||||
.antMatchers("/api/users/**", "/h2-console/**").permitAll()
|
||||
.anyRequest().authenticated()
|
||||
.and().headers().frameOptions().sameOrigin()
|
||||
.and()
|
||||
@@ -44,7 +45,7 @@ public class WebConfig {
|
||||
.disable()
|
||||
.exceptionHandling()
|
||||
.authenticationEntryPoint(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED));
|
||||
|
||||
http.addFilter(jwtAuthenticationFilter);
|
||||
return http.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package com.io.realworld.security.jwt;
|
||||
|
||||
import com.io.realworld.domain.aggregate.user.entity.User;
|
||||
import com.io.realworld.domain.aggregate.service.JwtService;
|
||||
import com.io.realworld.domain.service.JwtService;
|
||||
import com.io.realworld.domain.aggregate.user.service.UserServiceImpl;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.authority.AuthorityUtils;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
@@ -18,6 +21,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.Optional;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
||||
@@ -30,6 +34,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
||||
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
|
||||
log.info("hello jwt filter");
|
||||
Optional<String> token = getToken(request.getHeader(HEADER));
|
||||
String email = null;
|
||||
String jwt = null;
|
||||
|
||||
@@ -4,9 +4,9 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.io.realworld.domain.aggregate.user.dto.UserSignupRequest;
|
||||
import com.io.realworld.exception.CustomException;
|
||||
import com.io.realworld.exception.Error;
|
||||
import com.io.realworld.domain.aggregate.user.controller.UserController;
|
||||
import com.io.realworld.domain.aggregate.user.controller.UsersController;
|
||||
import com.io.realworld.domain.aggregate.user.entity.User;
|
||||
import com.io.realworld.domain.aggregate.service.JwtService;
|
||||
import com.io.realworld.domain.service.JwtService;
|
||||
import com.io.realworld.domain.aggregate.user.service.UserServiceImpl;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
@@ -33,8 +33,8 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
|
||||
|
||||
@WebMvcTest(controllers = UserController.class)
|
||||
class UserControllerTest {
|
||||
@WebMvcTest(controllers = UsersController.class)
|
||||
class UsersControllerTest {
|
||||
@Autowired
|
||||
MockMvc mockMvc;
|
||||
|
||||
@@ -42,7 +42,7 @@ class UserControllerTest {
|
||||
ObjectMapper objectMapper;
|
||||
|
||||
@InjectMocks
|
||||
private UserController userController;
|
||||
private UsersController usersController;
|
||||
|
||||
@MockBean
|
||||
private UserServiceImpl userService;
|
||||
Reference in New Issue
Block a user