generated from f-lab-edu/f-lab-springboot-jdbc-project-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6e5707f
commit de7823e
Showing
15 changed files
with
164 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
44 changes: 44 additions & 0 deletions
44
src/main/java/com/pjw/retry_view/controller/AdminController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package com.pjw.retry_view.controller; | ||
|
||
import com.pjw.retry_view.dto.UserAuth; | ||
import com.pjw.retry_view.dto.UserDTO; | ||
import com.pjw.retry_view.request.RegistUserRequest; | ||
import com.pjw.retry_view.response.RegistUserResponse; | ||
import com.pjw.retry_view.service.UserService; | ||
import jakarta.validation.Valid; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.validation.BindingResult; | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
import java.util.stream.Collectors; | ||
|
||
@RestController | ||
@RequestMapping("/admin") | ||
public class AdminController { | ||
private final UserService userService; | ||
|
||
public AdminController(UserService userService){ | ||
this.userService = userService; | ||
} | ||
|
||
@PostMapping("/regist") | ||
public ResponseEntity<RegistUserResponse> registAdminUser(@RequestBody @Valid RegistUserRequest userReq, BindingResult bindingResult) { | ||
RegistUserResponse response = new RegistUserResponse(); | ||
HttpStatus httpStatus = HttpStatus.OK; | ||
|
||
if (bindingResult.hasErrors()) { | ||
response.setBindingErrors(bindingResult.getAllErrors()); | ||
httpStatus = HttpStatus.BAD_REQUEST; | ||
} else { | ||
UserDTO user = userReq.toUserDTO(); | ||
user.setRole(UserAuth.ADMIN); | ||
UserDTO registUser = userService.saveUser(user); | ||
response.setName(registUser.getName()); | ||
response.setLoginId(registUser.getLoginId()); | ||
response.setNickname(registUser.getNickname()); | ||
} | ||
|
||
return new ResponseEntity<RegistUserResponse>(response, httpStatus); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
src/main/java/com/pjw/retry_view/converter/UserAutnEnumConverter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package com.pjw.retry_view.converter; | ||
|
||
import com.pjw.retry_view.dto.UserAuth; | ||
import io.micrometer.common.util.StringUtils; | ||
import jakarta.persistence.AttributeConverter; | ||
|
||
public class UserAutnEnumConverter implements AttributeConverter<UserAuth, String> { | ||
@Override | ||
public String convertToDatabaseColumn(UserAuth userAuth) { | ||
if(userAuth == null) return UserAuth.USER.getCode(); | ||
return userAuth.getCode(); | ||
} | ||
|
||
@Override | ||
public UserAuth convertToEntityAttribute(String code) { | ||
if(StringUtils.isBlank(code)) return UserAuth.USER; | ||
return UserAuth.getValue(code); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package com.pjw.retry_view.dto; | ||
|
||
import com.fasterxml.jackson.annotation.JsonCreator; | ||
import com.fasterxml.jackson.annotation.JsonValue; | ||
import lombok.Getter; | ||
|
||
import java.util.Arrays; | ||
|
||
@Getter | ||
public enum UserAuth { | ||
USER("User"), | ||
ADMIN("Admin"); | ||
@JsonValue | ||
private final String code; | ||
UserAuth(String code){ this.code = code;} | ||
|
||
@JsonCreator | ||
public static UserAuth getValue(String code){ | ||
return Arrays.stream(UserAuth.values()).filter(auth->auth.getCode().equals(code)).findFirst().orElse(UserAuth.USER); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
src/main/java/com/pjw/retry_view/filter/UserAuthorizationFilter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package com.pjw.retry_view.filter; | ||
|
||
import com.pjw.retry_view.dto.UserAuth; | ||
import com.pjw.retry_view.util.JWTUtil; | ||
import jakarta.servlet.FilterChain; | ||
import jakarta.servlet.ServletException; | ||
import jakarta.servlet.http.HttpServletRequest; | ||
import jakarta.servlet.http.HttpServletResponse; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.stereotype.Component; | ||
import org.springframework.web.filter.OncePerRequestFilter; | ||
|
||
import java.io.IOException; | ||
import java.util.HashSet; | ||
import java.util.Set; | ||
|
||
@Component | ||
public class UserAuthorizationFilter extends OncePerRequestFilter { | ||
private static final Set<String> excludeUrlPatterns = new HashSet<>(Set.of("/login","/users/regist","/admin/regist")); | ||
private static final String ADMIN_URL = "/admin"; | ||
|
||
@Override | ||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { | ||
String uri = request.getRequestURI(); | ||
String jwt = request.getHeader("Authorization"); | ||
UserAuth userAuth = JWTUtil.getUserAuthInJWT(jwt); | ||
if(uri.startsWith(ADMIN_URL) && !UserAuth.ADMIN.equals(userAuth)){ | ||
response.sendError(HttpStatus.UNAUTHORIZED.value(), "권한이 없습니다."); | ||
} | ||
filterChain.doFilter(request,response); | ||
} | ||
|
||
@Override | ||
protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException { | ||
String uri = request.getRequestURI(); | ||
return excludeUrlPatterns.contains(uri); | ||
} | ||
} |
3 changes: 1 addition & 2 deletions
3
src/main/java/com/pjw/retry_view/request/RegistUserRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters