Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump webpack-dev-server from 2.11.5 to 3.1.11 in /frontend #5

Merged
@@ -1,15 +1,12 @@
package com.mang.example.security.app.user.controller;

import com.mang.example.security.app.user.domain.User;
import com.mang.example.security.app.user.dto.SignUpDTO;
import com.mang.example.security.app.user.dto.UserListResponseDTO;
import com.mang.example.security.app.user.service.UserService;
import com.mang.example.security.enums.role.UserRole;
import com.mang.example.security.utils.TokenUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.http.ResponseEntity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.bind.annotation.*;

@RequiredArgsConstructor
Expand All @@ -18,25 +15,18 @@
@Log4j2
public class UserController {

private final BCryptPasswordEncoder passwordEncoder;
private final UserService userService;

@PostMapping(value = "/signUp")
public ResponseEntity<String> signUp(@RequestBody SignUpDTO signUpDTO) {
User user = User.builder()
.email(signUpDTO.getEmail())
.pw(passwordEncoder.encode(signUpDTO.getPw()))
.role(UserRole.ROLE_USER)
.build();

return userService.findByEmail(user.getEmail()).isPresent()
public ResponseEntity<String> signUp(@RequestBody final SignUpDTO signUpDTO) {
return userService.findByEmail(signUpDTO.getEmail()).isPresent()
? ResponseEntity.badRequest().build()
: ResponseEntity.ok(TokenUtils.generateJwtToken(userService.signUp(user)));
: ResponseEntity.ok(TokenUtils.generateJwtToken(userService.signUp(signUpDTO)));
}

@GetMapping(value = "/list")
public ResponseEntity<UserListResponseDTO> findAll() {
UserListResponseDTO userListResponseDTO = UserListResponseDTO.builder()
final UserListResponseDTO userListResponseDTO = UserListResponseDTO.builder()
.userList(userService.findAll()).build();

return ResponseEntity.ok(userListResponseDTO);
Expand Down
@@ -1,20 +1,20 @@
package com.mang.example.security.app.user.domain;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.experimental.Delegate;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Collection;

@AllArgsConstructor
@RequiredArgsConstructor
@Getter
public class MyUserDetails implements UserDetails {

@Delegate
private User user;
private Collection<? extends GrantedAuthority> authorities;
private final User user;
private final Collection<? extends GrantedAuthority> authorities;

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
Expand Down
Expand Up @@ -3,21 +3,24 @@
import com.mang.example.security.app.user.domain.MyUserDetails;
import com.mang.example.security.app.user.repository.UserRepository;
import com.mang.example.security.exception.UserNotFoundException;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.stereotype.Service;

import java.util.Collections;

@AllArgsConstructor
@Service("userDetailsService")
@RequiredArgsConstructor
@Service
public class UserDetailsServiceImpl implements UserDetailsService {

private UserRepository userRepository;
private final UserRepository userRepository;

@Override
public MyUserDetails loadUserByUsername(String email) {
return userRepository.findByEmail(email).map(u -> new MyUserDetails(u, Collections.singleton(new SimpleGrantedAuthority(u.getRole().getValue())))).orElseThrow(() -> new UserNotFoundException(email));
return userRepository.findByEmail(email)
.map(u -> new MyUserDetails(u, Collections.singleton(new SimpleGrantedAuthority(u.getRole().getValue()))))
.orElseThrow(() -> new UserNotFoundException(email));
}

}
@@ -1,15 +1,16 @@
package com.mang.example.security.app.user.service;

import com.mang.example.security.app.user.domain.User;
import com.mang.example.security.app.user.dto.SignUpDTO;

import java.util.List;
import java.util.Optional;

public interface UserService {

User signUp(User user);
User signUp(final SignUpDTO signUpDTO);

Optional<User> findByEmail(String email);
Optional<User> findByEmail(final String email);

List<User> findAll();

Expand Down
@@ -1,28 +1,36 @@
package com.mang.example.security.app.user.service;

import com.mang.example.security.app.user.domain.User;
import com.mang.example.security.app.user.dto.SignUpDTO;
import com.mang.example.security.app.user.repository.UserRepository;
import lombok.NonNull;
import com.mang.example.security.enums.role.UserRole;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@RequiredArgsConstructor
@Service("userService")
@Service
public class UserServiceImpl implements UserService {

@NonNull
private UserRepository userRepository;
private final UserRepository userRepository;
private final BCryptPasswordEncoder passwordEncoder;

@Override
public User signUp(User user) {
public User signUp(final SignUpDTO signUpDTO) {
final User user = User.builder()
.email(signUpDTO.getEmail())
.pw(passwordEncoder.encode(signUpDTO.getPw()))
.role(UserRole.ROLE_USER)
.build();

return userRepository.save(user);
}

@Override
public Optional<User> findByEmail(String email) {
public Optional<User> findByEmail(final String email) {
return userRepository.findByEmail(email);
}

Expand Down
Expand Up @@ -10,8 +10,8 @@
public class HeaderFilter implements Filter {

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) response;
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
final HttpServletResponse res = (HttpServletResponse) response;
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET, POST");
res.setHeader("Access-Control-Max-Age", "3600");
Expand Down
Expand Up @@ -13,11 +13,11 @@
public class JwtTokenInterceptor implements HandlerInterceptor {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
String header = request.getHeader(AuthConstants.AUTH_HEADER);
public boolean preHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler) throws IOException {
final String header = request.getHeader(AuthConstants.AUTH_HEADER);

if (header != null) {
String token = TokenUtils.getTokenFromHeader(header);
final String token = TokenUtils.getTokenFromHeader(header);
if (TokenUtils.isValidToken(token)) {
return true;
}
Expand Down
Expand Up @@ -17,15 +17,15 @@
@Log4j2
public class CustomAuthenticationFilter extends UsernamePasswordAuthenticationFilter {

public CustomAuthenticationFilter(AuthenticationManager authenticationManager) {
public CustomAuthenticationFilter(final AuthenticationManager authenticationManager) {
super.setAuthenticationManager(authenticationManager);
}

@Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException{
UsernamePasswordAuthenticationToken authRequest;
public Authentication attemptAuthentication(final HttpServletRequest request, final HttpServletResponse response) throws AuthenticationException{
final UsernamePasswordAuthenticationToken authRequest;
try{
User user = new ObjectMapper().readValue(request.getInputStream(), User.class);
final User user = new ObjectMapper().readValue(request.getInputStream(), User.class);
authRequest = new UsernamePasswordAuthenticationToken(user.getEmail(), user.getPw());
} catch (IOException exception){
throw new InputNotFoundException();
Expand Down
Expand Up @@ -17,19 +17,19 @@
@Log4j2
public class CustomAuthenticationProvider implements AuthenticationProvider {

@Resource(name="userDetailsService")
@Resource(name="userDetailsServiceImpl")
private UserDetailsService userDetailsService;
private final BCryptPasswordEncoder passwordEncoder;

@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
public Authentication authenticate(final Authentication authentication) throws AuthenticationException {
log.error("##############");
UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) authentication;
final UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) authentication;
// AuthenticaionFilter에서 생성된 토큰으로부터 아이디와 비밀번호를 조회함
String userEmail = token.getName();
String userPw = (String) token.getCredentials();
final String userEmail = token.getName();
final String userPw = (String) token.getCredentials();
// UserDetailsService를 통해 DB에서 아이디로 사용자 조회
MyUserDetails userDetails = (MyUserDetails) userDetailsService.loadUserByUsername(userEmail);
final MyUserDetails userDetails = (MyUserDetails) userDetailsService.loadUserByUsername(userEmail);
if (!passwordEncoder.matches(userPw, userDetails.getPassword())) {
throw new BadCredentialsException(userDetails.getUsername() + "Invalid password");
}
Expand Down
@@ -1,7 +1,7 @@
package com.mang.example.security.config.web;

import com.mang.example.security.config.interceptor.JwtTokenInterceptor;
import com.mang.example.security.config.filter.HeaderFilter;
import com.mang.example.security.config.interceptor.JwtTokenInterceptor;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down
@@ -1,5 +1,9 @@
package com.mang.example.security.constants;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class AuthConstants {

public static final String AUTH_HEADER = "Authorization";
Expand Down
@@ -1,15 +1,15 @@
package com.mang.example.security.enums.role;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@AllArgsConstructor
@RequiredArgsConstructor
@Getter
public enum UserRole {

ROLE_USER("ROLE_USER"),
ROLE_ADMIN("ROLE_ADMIN");

private String value;
private final String value;

}
Expand Up @@ -15,10 +15,10 @@
public class CustomLoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {

@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) {
User user = ((MyUserDetails) authentication.getPrincipal()).getUser();
String token = TokenUtils.generateJwtToken(user);
public void onAuthenticationSuccess(final HttpServletRequest request, final HttpServletResponse response,
final Authentication authentication) {
final User user = ((MyUserDetails) authentication.getPrincipal()).getUser();
final String token = TokenUtils.generateJwtToken(user);
response.addHeader(AuthConstants.AUTH_HEADER, AuthConstants.TOKEN_TYPE + " " + token);
}

Expand Down
Expand Up @@ -3,7 +3,8 @@
import com.mang.example.security.app.user.domain.User;
import com.mang.example.security.enums.role.UserRole;
import io.jsonwebtoken.*;
import lombok.RequiredArgsConstructor;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.log4j.Log4j2;

import javax.crypto.spec.SecretKeySpec;
Expand All @@ -15,6 +16,7 @@
import java.util.Map;

@Log4j2
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class TokenUtils {

private static final String secretKey = "ThisIsA_SecretKeyForJwtExample";
Expand Down