From 1063aaf19e04e137affdf01448be645e13b6e2a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=98=84=EC=84=B1=ED=95=84?= Date: Tue, 22 Aug 2023 13:57:28 +0900 Subject: [PATCH] =?UTF-8?q?sonar=20=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/MockApiController.java | 73 +++++++++++++------ .../controller/MockRouteMgmtController.java | 17 +++-- .../httpmockserver/api/dto/MockRequest.java | 8 +- .../api/dto/MockRouteSearch.java | 9 --- .../httpmockserver/api/entity/MockRoute.java | 4 - .../api/mapper/MockRouteMapper.java | 11 ++- .../api/service/MockRouteService.java | 9 +-- .../controller/ApiClientController.java | 2 +- .../controller/ApiRequestMgmtController.java | 32 +++++--- .../client/entity/ApiRequestInfo.java | 8 -- .../repository/ApiRequestRepository.java | 4 - .../client/service/ApiRequestMgmtService.java | 18 +++-- .../service/ApiRequestMigrationService.java | 4 +- .../client/service/NettyApiClient.java | 19 +++-- .../exception/ServerNotFoundException.java | 8 ++ .../common/security/CurrentUser.java | 9 --- .../security/CurrentUserArgumentResolver.java | 49 ------------- .../validator/UniqueUserIdValidator.java | 2 +- .../PortalAuthenticationFailureHandler.java | 14 +++- .../PortalAuthenticationSuccessHandler.java | 2 +- .../config/PortalConfigAppDatasource.java | 3 - .../config/PortalConfigSecurity.java | 24 +++--- .../httpmockserver/config/WebMvcConfig.java | 6 -- .../httpmockserver/home/HomeController.java | 2 +- .../controller/ServerMgmtController.java | 26 ++++--- .../server/dto/ServerSearch.java | 9 --- .../server/mapper/ServerMapper.java | 2 +- .../server/service/ServerMgmtService.java | 2 +- .../user/controller/AccountController.java | 17 ++--- .../user/controller/UserMgmtController.java | 8 +- .../user/dto/UserRegisterDTO.java | 5 +- .../httpmockserver/user/dto/UserSearch.java | 4 +- .../user/dto/UserUpdateDTO.java | 2 +- .../user/mapper/StaffUserMapper.java | 5 +- .../user/service/StaffUserService.java | 4 +- .../user/service/UserService.java | 10 +-- 36 files changed, 188 insertions(+), 243 deletions(-) create mode 100644 src/main/java/com/eactive/httpmockserver/common/exception/ServerNotFoundException.java delete mode 100644 src/main/java/com/eactive/httpmockserver/common/security/CurrentUser.java delete mode 100644 src/main/java/com/eactive/httpmockserver/common/security/CurrentUserArgumentResolver.java diff --git a/src/main/java/com/eactive/httpmockserver/api/controller/MockApiController.java b/src/main/java/com/eactive/httpmockserver/api/controller/MockApiController.java index c4b9cc3..0aaabcb 100644 --- a/src/main/java/com/eactive/httpmockserver/api/controller/MockApiController.java +++ b/src/main/java/com/eactive/httpmockserver/api/controller/MockApiController.java @@ -4,7 +4,6 @@ import com.eactive.httpmockserver.api.dto.MockRequest; import com.eactive.httpmockserver.api.entity.MockCondition; import com.eactive.httpmockserver.api.entity.MockResponse; import com.eactive.httpmockserver.api.entity.MockRoute; -import com.eactive.httpmockserver.api.repository.MockRouteRepository; import com.eactive.httpmockserver.api.service.MockRouteService; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.PathNotFoundException; @@ -19,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; +import java.io.IOException; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -35,7 +35,7 @@ public class MockApiController { @RequestMapping(value = "/{_:^(?!swagger-ui|mgmt|min-maps|plugins|dist|css|fonts|js|h2-console|img|pages|favicon.ico).*$}/**") - public ResponseEntity handleRequest(HttpServletRequest httpRequest) { + public ResponseEntity handleRequest(HttpServletRequest httpRequest) throws IOException { MockRequest request = new MockRequest(httpRequest); AntPathMatcher pathMatcher = new AntPathMatcher(); @@ -51,7 +51,7 @@ public class MockApiController { try { Thread.sleep(matchingResponse.getDelay()); } catch (InterruptedException e) { - e.printStackTrace(); + logger.error("Error while delaying response", e); } } HttpHeaders responseHeaders = new HttpHeaders(); @@ -98,34 +98,59 @@ public class MockApiController { private boolean isRequestMatching(List conditions, MockRequest request, Map pathVariables) { - if (conditions == null || conditions.size() == 0) { + if (conditions == null) { return true; } for (MockCondition condition : conditions) { - if (condition.getType().equalsIgnoreCase("query")) { - if(!condition.getValue().equals(request.getParam(condition.getKey()))){ - return false; - } - } else if (condition.getType().equalsIgnoreCase("header")) { - if (!condition.getValue().equals(request.getHeader(condition.getKey()))){ - return false; - } - } else if (condition.getType().equalsIgnoreCase("path")) { - if (!condition.getValue().equals(pathVariables.get(condition.getKey()))){ - return false; - } - } else if (condition.getType().equalsIgnoreCase("jsonpath")) { - try{ - Object value = JsonPath.read(request.getBody(), condition.getKey()); - return value.toString().equals(condition.getValue()); - }catch(PathNotFoundException e) { - return false; - } + switch (condition.getType().toLowerCase()) { + case "query": + if (!isQueryMatching(condition, request)) { + return false; + } + break; + case "header": + if (!isHeaderMatching(condition, request)) { + return false; + } + break; + case "path": + if (!isPathMatching(condition, pathVariables)) { + return false; + } + break; + case "jsonpath": + if (!isJsonPathMatching(condition, request)) { + return false; + } + break; + default: + break; } - } return true; } + private boolean isQueryMatching(MockCondition condition, MockRequest request) { + return condition.getValue().equals(request.getParam(condition.getKey())); + } + + private boolean isHeaderMatching(MockCondition condition, MockRequest request) { + return condition.getValue().equals(request.getHeader(condition.getKey())); + } + + private boolean isPathMatching(MockCondition condition, Map pathVariables) { + return condition.getValue().equals(pathVariables.get(condition.getKey())); + } + + private boolean isJsonPathMatching(MockCondition condition, MockRequest request) { + try { + Object value = JsonPath.read(request.getBody(), condition.getKey()); + return value.toString().equals(condition.getValue()); + } catch (PathNotFoundException e) { + return false; + } + } + + } diff --git a/src/main/java/com/eactive/httpmockserver/api/controller/MockRouteMgmtController.java b/src/main/java/com/eactive/httpmockserver/api/controller/MockRouteMgmtController.java index 072a46a..5850b73 100644 --- a/src/main/java/com/eactive/httpmockserver/api/controller/MockRouteMgmtController.java +++ b/src/main/java/com/eactive/httpmockserver/api/controller/MockRouteMgmtController.java @@ -17,11 +17,14 @@ import org.springframework.validation.Validator; import org.springframework.web.bind.annotation.*; import javax.annotation.PostConstruct; +import java.util.List; @Controller @RequestMapping("/mgmt/routes") public class MockRouteMgmtController { + private static final String MOCK_ROUTE = "mockRoute"; + @PostConstruct public void init() { mockRouteService.initAllRoutes(); @@ -56,7 +59,7 @@ public class MockRouteMgmtController { MockResponseDTO defaultResponse = new MockResponseDTO(); defaultResponse.setDefaultResponse("true"); defaultRoute.getResponses().add(defaultResponse); - model.addAttribute("mockRoute", defaultRoute); + model.addAttribute(MOCK_ROUTE, defaultRoute); return MOCK_ROUTE_EDIT; } @@ -65,7 +68,7 @@ public class MockRouteMgmtController { MockRoute found = mockRouteService.findById(id); - model.addAttribute("mockRoute", mockRouteMapper.map(found)); + model.addAttribute(MOCK_ROUTE, mockRouteMapper.map(found)); return MOCK_ROUTE_EDIT; } @@ -79,7 +82,7 @@ public class MockRouteMgmtController { validator.validate(dto, bindingResult); if (bindingResult.hasErrors()) { - model.addAttribute("mockRoute", dto); + model.addAttribute(MOCK_ROUTE, dto); return MOCK_ROUTE_EDIT; } @@ -102,7 +105,7 @@ public class MockRouteMgmtController { validator.validate(dto, bindingResult); if (bindingResult.hasErrors()) { - model.addAttribute("mockRoute", dto); + model.addAttribute(MOCK_ROUTE, dto); return MOCK_ROUTE_EDIT; } @@ -114,10 +117,10 @@ public class MockRouteMgmtController { @PostMapping("/delete.do") - public String delete(@ModelAttribute MockRouteSearch modelSearch) { - modelSearch.getCheckedIdForDel().forEach(id -> { + public String delete(@RequestParam("checkedIdForDel") List ids) { + for (String id : ids) { mockRouteService.deleteById(Long.parseLong(id)); - }); + } mockRouteService.initAllRoutes(); return MOCK_ROUTE_LIST_VIEW; } diff --git a/src/main/java/com/eactive/httpmockserver/api/dto/MockRequest.java b/src/main/java/com/eactive/httpmockserver/api/dto/MockRequest.java index e6bf808..76faaad 100644 --- a/src/main/java/com/eactive/httpmockserver/api/dto/MockRequest.java +++ b/src/main/java/com/eactive/httpmockserver/api/dto/MockRequest.java @@ -27,7 +27,7 @@ public class MockRequest { return queryParams; } - public MockRequest(HttpServletRequest request) { + public MockRequest(HttpServletRequest request) throws IOException { this.method = request.getMethod(); this.uri = request.getRequestURI(); this.headers = Collections.list(request.getHeaderNames()).stream() @@ -35,11 +35,7 @@ public class MockRequest { this.params = parseQueryString(request); - try { - this.body = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); - } catch (IOException e) { - e.printStackTrace(); - } + this.body = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); } private String uri; diff --git a/src/main/java/com/eactive/httpmockserver/api/dto/MockRouteSearch.java b/src/main/java/com/eactive/httpmockserver/api/dto/MockRouteSearch.java index 542427c..4cd4bab 100644 --- a/src/main/java/com/eactive/httpmockserver/api/dto/MockRouteSearch.java +++ b/src/main/java/com/eactive/httpmockserver/api/dto/MockRouteSearch.java @@ -13,8 +13,6 @@ public class MockRouteSearch implements BaseSearch { private String name; - private List checkedIdForDel; - @Override public List buildSearchCondition() { List models = new ArrayList<>(); @@ -30,11 +28,4 @@ public class MockRouteSearch implements BaseSearch { this.name = name; } - public List getCheckedIdForDel() { - return checkedIdForDel; - } - - public void setCheckedIdForDel(List checkedIdForDel) { - this.checkedIdForDel = checkedIdForDel; - } } diff --git a/src/main/java/com/eactive/httpmockserver/api/entity/MockRoute.java b/src/main/java/com/eactive/httpmockserver/api/entity/MockRoute.java index 1b66ed4..0640f49 100644 --- a/src/main/java/com/eactive/httpmockserver/api/entity/MockRoute.java +++ b/src/main/java/com/eactive/httpmockserver/api/entity/MockRoute.java @@ -73,8 +73,4 @@ public class MockRoute { this.description = description; } - public void updateFields(MockRoute update) { - - - } } diff --git a/src/main/java/com/eactive/httpmockserver/api/mapper/MockRouteMapper.java b/src/main/java/com/eactive/httpmockserver/api/mapper/MockRouteMapper.java index cfc0e49..88545a1 100644 --- a/src/main/java/com/eactive/httpmockserver/api/mapper/MockRouteMapper.java +++ b/src/main/java/com/eactive/httpmockserver/api/mapper/MockRouteMapper.java @@ -77,23 +77,26 @@ public abstract class MockRouteMapper { public List mapHeadersToList(Map headers) { List list = new ArrayList<>(); if (headers != null) { - headers.forEach((key, value) -> { + for (Map.Entry entry : headers.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); MockHeaderDTO header = new MockHeaderDTO(); header.setKey(key); header.setValue(value); list.add(header); - }); + } } return list; } + @Named("mapHeadersToMap") public Map mapHeadersToMap(List headers) { Map map = new HashMap<>(); if (headers != null) { - headers.forEach(header -> { + for (MockHeaderDTO header : headers) { map.put(header.getKey(), header.getValue()); - }); + } } return map; } diff --git a/src/main/java/com/eactive/httpmockserver/api/service/MockRouteService.java b/src/main/java/com/eactive/httpmockserver/api/service/MockRouteService.java index a741620..c6d5860 100644 --- a/src/main/java/com/eactive/httpmockserver/api/service/MockRouteService.java +++ b/src/main/java/com/eactive/httpmockserver/api/service/MockRouteService.java @@ -13,11 +13,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.transaction.Transactional; import java.lang.reflect.InvocationTargetException; -import java.sql.Array; import java.util.ArrayList; import java.util.List; @@ -30,10 +27,7 @@ public class MockRouteService { @Autowired MockRouteRepository mockRouteRepository; - @PersistenceContext - private EntityManager entityManager; - - private List allRoutes = new ArrayList(); + private List allRoutes = new ArrayList<>(); public List getAllRoutes() { return allRoutes; @@ -116,7 +110,6 @@ public class MockRouteService { } Hibernate.initialize(response); } -// entityManager.detach(route); try { MockRoute cloned = (MockRoute) BeanUtils.cloneBean(route); allRoutes.add(cloned); diff --git a/src/main/java/com/eactive/httpmockserver/client/controller/ApiClientController.java b/src/main/java/com/eactive/httpmockserver/client/controller/ApiClientController.java index b85dfce..fe4bdc5 100644 --- a/src/main/java/com/eactive/httpmockserver/client/controller/ApiClientController.java +++ b/src/main/java/com/eactive/httpmockserver/client/controller/ApiClientController.java @@ -2,9 +2,9 @@ package com.eactive.httpmockserver.client.controller; import com.eactive.httpmockserver.client.dto.ApiRequestDTO; import com.eactive.httpmockserver.client.dto.ApiResponse; +import com.eactive.httpmockserver.client.service.NettyApiClient; import com.eactive.httpmockserver.server.entity.Server; import com.eactive.httpmockserver.server.entity.ServerRepository; -import com.eactive.httpmockserver.client.service.NettyApiClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; diff --git a/src/main/java/com/eactive/httpmockserver/client/controller/ApiRequestMgmtController.java b/src/main/java/com/eactive/httpmockserver/client/controller/ApiRequestMgmtController.java index 2b9de48..f3dd757 100644 --- a/src/main/java/com/eactive/httpmockserver/client/controller/ApiRequestMgmtController.java +++ b/src/main/java/com/eactive/httpmockserver/client/controller/ApiRequestMgmtController.java @@ -6,9 +6,9 @@ import com.eactive.httpmockserver.client.entity.ApiCollection; import com.eactive.httpmockserver.client.entity.ApiRequestInfo; import com.eactive.httpmockserver.client.mapper.ApiRequestMapper; import com.eactive.httpmockserver.client.service.ApiRequestMgmtService; -import com.eactive.httpmockserver.common.security.CurrentUser; +import com.eactive.httpmockserver.common.util.SecurityUtil; import com.eactive.httpmockserver.user.entity.StaffUser; -import org.springframework.beans.factory.annotation.Autowired; +import com.eactive.httpmockserver.user.service.UserService; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -17,28 +17,36 @@ import java.util.List; @RestController public class ApiRequestMgmtController { - @Autowired + private static final String SUCCESS = "success"; ApiRequestMgmtService apiRequestMgmtService; - @Autowired ApiRequestMapper apiRequestMapper; + UserService userService; + + public ApiRequestMgmtController(ApiRequestMgmtService apiRequestMgmtService, ApiRequestMapper apiRequestMapper, UserService userService) { + this.apiRequestMgmtService = apiRequestMgmtService; + this.apiRequestMapper = apiRequestMapper; + this.userService = userService; + } + @GetMapping("/mgmt/collections/list.do") - public ResponseEntity> listApiRequests(@CurrentUser StaffUser user) { + public ResponseEntity> listApiRequests() { + StaffUser user = userService.findByEsntlId(SecurityUtil.getCurrentUserEsntlId()); List collections = apiRequestMgmtService.getMyApis(user); return ResponseEntity.ok(apiRequestMapper.mapCollections(collections)); } @PostMapping("/mgmt/collections/create.do") public ResponseEntity createApiCollection( - @CurrentUser StaffUser user, @RequestBody ApiCollectionDTO dto) { ApiCollection collection = apiRequestMapper.map(dto); + StaffUser user = userService.findByEsntlId(SecurityUtil.getCurrentUserEsntlId()); collection.setOwner(user); apiRequestMgmtService.createNewApiCollection(collection); - return ResponseEntity.ok("success"); + return ResponseEntity.ok(SUCCESS); } @@ -46,20 +54,20 @@ public class ApiRequestMgmtController { public ResponseEntity updateApiCollection(@RequestBody ApiCollectionDTO dto) { ApiCollection updated = apiRequestMapper.map(dto); apiRequestMgmtService.updateApiCollection(updated.getId(), updated); - return ResponseEntity.ok("success"); + return ResponseEntity.ok(SUCCESS); } @PostMapping("/mgmt/collections/delete.do") public ResponseEntity deleteApiCollection(@RequestBody ApiCollectionDTO dto) { apiRequestMgmtService.deleteApiCollection(dto.getId()); - return ResponseEntity.ok("success"); + return ResponseEntity.ok(SUCCESS); } @PostMapping("/mgmt/collections/{id}/apis/save.do") public ResponseEntity addApiToCollection(@PathVariable(name = "id") String id, - @RequestBody ApiRequestDTO dto, - @CurrentUser StaffUser user) { + @RequestBody ApiRequestDTO dto) { ApiRequestInfo apiRequestInfo = apiRequestMapper.map(dto); + StaffUser user = userService.findByEsntlId(SecurityUtil.getCurrentUserEsntlId()); apiRequestInfo.setOwner(user); String apiId = apiRequestMgmtService.saveApiToCollection(id, apiRequestInfo); return ResponseEntity.ok(apiId); @@ -69,7 +77,7 @@ public class ApiRequestMgmtController { public ResponseEntity removeApiFromCollection(@PathVariable(name = "id") String id, @RequestBody ApiRequestDTO dto) { apiRequestMgmtService.removeApiFromCollection(id, dto.getId()); - return ResponseEntity.ok("success"); + return ResponseEntity.ok(SUCCESS); } } diff --git a/src/main/java/com/eactive/httpmockserver/client/entity/ApiRequestInfo.java b/src/main/java/com/eactive/httpmockserver/client/entity/ApiRequestInfo.java index 7bfcdf3..124b141 100644 --- a/src/main/java/com/eactive/httpmockserver/client/entity/ApiRequestInfo.java +++ b/src/main/java/com/eactive/httpmockserver/client/entity/ApiRequestInfo.java @@ -119,12 +119,4 @@ public class ApiRequestInfo { return Objects.hash(id, server, owner, method, path, headers, queryParams, requestBody); } - public static void main(String[] args) { - ApiRequestInfo a= new ApiRequestInfo(); - a.setId("a"); - ApiRequestInfo b = new ApiRequestInfo(); - a.setId("a"); - - System.out.println(a.equals(b)); - } } diff --git a/src/main/java/com/eactive/httpmockserver/client/repository/ApiRequestRepository.java b/src/main/java/com/eactive/httpmockserver/client/repository/ApiRequestRepository.java index ec301bb..4dd8525 100644 --- a/src/main/java/com/eactive/httpmockserver/client/repository/ApiRequestRepository.java +++ b/src/main/java/com/eactive/httpmockserver/client/repository/ApiRequestRepository.java @@ -1,13 +1,9 @@ package com.eactive.httpmockserver.client.repository; -import com.eactive.httpmockserver.client.entity.ApiCollection; import com.eactive.httpmockserver.client.entity.ApiRequestInfo; -import com.eactive.httpmockserver.user.entity.StaffUser; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; -import java.util.List; - public interface ApiRequestRepository extends JpaRepository, JpaSpecificationExecutor { } diff --git a/src/main/java/com/eactive/httpmockserver/client/service/ApiRequestMgmtService.java b/src/main/java/com/eactive/httpmockserver/client/service/ApiRequestMgmtService.java index 22b414d..148d7ba 100644 --- a/src/main/java/com/eactive/httpmockserver/client/service/ApiRequestMgmtService.java +++ b/src/main/java/com/eactive/httpmockserver/client/service/ApiRequestMgmtService.java @@ -18,6 +18,10 @@ import java.util.UUID; @Transactional public class ApiRequestMgmtService { + private static final String API_COLLECTION_NOT_FOUND = "api collection[%s] not found"; + + private static final String API_NOT_FOUND = "api collection[%s] not found"; + @Autowired ApiCollectionRepository apiCollectionRepository; @@ -30,9 +34,9 @@ public class ApiRequestMgmtService { } public void deleteApiCollection(String id) { - ApiCollection collection = apiCollectionRepository.findById(id).orElseThrow(() -> new NotFoundException("api collection[" + id + "] not found")); + ApiCollection collection = apiCollectionRepository.findById(id).orElseThrow(() -> new NotFoundException(String.format(API_COLLECTION_NOT_FOUND, id))); - if (collection.getApis().size()>0){ + if (!collection.getApis().isEmpty()) { throw new RuntimeException("api collection[" + id + "] is not empty"); } apiCollectionRepository.deleteById(id); @@ -44,20 +48,20 @@ public class ApiRequestMgmtService { } public void updateApiCollection(String id, ApiCollection updated) { - ApiCollection collection = apiCollectionRepository.findById(id).orElseThrow(() -> new NotFoundException("api collection[" + id + "] not found")); + ApiCollection collection = apiCollectionRepository.findById(id).orElseThrow(() -> new NotFoundException(String.format(API_COLLECTION_NOT_FOUND, id))); collection.setName(updated.getName()); apiCollectionRepository.save(collection); } public String saveApiToCollection(String id, ApiRequestInfo api) { - ApiCollection collection = apiCollectionRepository.findById(id).orElseThrow(() -> new NotFoundException("api collection[" + id + "] not found")); + ApiCollection collection = apiCollectionRepository.findById(id).orElseThrow(() -> new NotFoundException(String.format(API_COLLECTION_NOT_FOUND, id))); if (StringUtils.isEmpty(api.getId())) { api.setId(UUID.randomUUID().toString()); apiRequestRepository.save(api); } else { String apiId = api.getId(); - ApiRequestInfo existing = apiRequestRepository.findById(apiId).orElseThrow(() -> new NotFoundException("api[" + apiId + "] not found")); + ApiRequestInfo existing = apiRequestRepository.findById(apiId).orElseThrow(() -> new NotFoundException(String.format(API_NOT_FOUND, apiId))); existing.setName(api.getName()); existing.setMethod(api.getMethod()); existing.setPath(api.getPath()); @@ -79,8 +83,8 @@ public class ApiRequestMgmtService { } public void removeApiFromCollection(String id, String apiId) { - ApiCollection collection = apiCollectionRepository.findById(id).orElseThrow(() -> new NotFoundException("api collection[" + id + "] not found")); - ApiRequestInfo api = apiRequestRepository.findById(apiId).orElseThrow(() -> new NotFoundException("api[" + apiId + "] not found")); + ApiCollection collection = apiCollectionRepository.findById(id).orElseThrow(() -> new NotFoundException(String.format(API_COLLECTION_NOT_FOUND, id))); + ApiRequestInfo api = apiRequestRepository.findById(apiId).orElseThrow(() -> new NotFoundException(String.format(API_NOT_FOUND, apiId))); collection.getApis().remove(api); apiCollectionRepository.save(collection); diff --git a/src/main/java/com/eactive/httpmockserver/client/service/ApiRequestMigrationService.java b/src/main/java/com/eactive/httpmockserver/client/service/ApiRequestMigrationService.java index 61c575c..5408c8c 100644 --- a/src/main/java/com/eactive/httpmockserver/client/service/ApiRequestMigrationService.java +++ b/src/main/java/com/eactive/httpmockserver/client/service/ApiRequestMigrationService.java @@ -20,8 +20,8 @@ public class ApiRequestMigrationService { public void migrate() { apiRequestRepository.findAll().forEach(apiRequest -> { - apiRequest.setHeaders(apiRequest.getHeaders().replaceAll("=", "::")); - apiRequest.setQueryParams(apiRequest.getQueryParams().replaceAll("=", "::")); + apiRequest.setHeaders(apiRequest.getHeaders().replace("=", "::")); + apiRequest.setQueryParams(apiRequest.getQueryParams().replace("=", "::")); apiRequestRepository.save(apiRequest); }); diff --git a/src/main/java/com/eactive/httpmockserver/client/service/NettyApiClient.java b/src/main/java/com/eactive/httpmockserver/client/service/NettyApiClient.java index cf1221a..3416537 100644 --- a/src/main/java/com/eactive/httpmockserver/client/service/NettyApiClient.java +++ b/src/main/java/com/eactive/httpmockserver/client/service/NettyApiClient.java @@ -1,8 +1,9 @@ package com.eactive.httpmockserver.client.service; -import com.eactive.httpmockserver.client.dto.ApiRequestKeyValueDTO; import com.eactive.httpmockserver.client.dto.ApiRequestDTO; +import com.eactive.httpmockserver.client.dto.ApiRequestKeyValueDTO; import com.eactive.httpmockserver.client.dto.ApiResponse; +import com.eactive.httpmockserver.common.exception.ServerNotFoundException; import com.eactive.httpmockserver.server.entity.Server; import com.eactive.httpmockserver.server.entity.ServerRepository; import io.netty.bootstrap.Bootstrap; @@ -24,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.net.ssl.SSLException; +import java.nio.file.Paths; import java.util.concurrent.CompletableFuture; @Service @@ -32,9 +34,9 @@ public class NettyApiClient { @Autowired ServerRepository serverRepository; - public CompletableFuture handleRequest(ApiRequestDTO apiRequest) throws Exception { + public CompletableFuture handleRequest(ApiRequestDTO apiRequest) throws InterruptedException { - Server server = serverRepository.findById(apiRequest.getServer()).orElseThrow(() -> new Exception("Server not found")); + Server server = serverRepository.findById(apiRequest.getServer()).orElseThrow(() -> new ServerNotFoundException("Server not found")); String host = server.getHostname(); int port = server.getPort(); @@ -74,12 +76,9 @@ public class NettyApiClient { } String basePath = server.getBasePath(); - if(!apiRequest.getPath().startsWith("/")){ - basePath = basePath + "/"; - } + String fullPath = Paths.get(basePath, apiRequest.getPath()).toString(); - HttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.valueOf(apiRequest.getMethod()), - (basePath + apiRequest.getPath()).replaceAll("//", "/"), content); + HttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.valueOf(apiRequest.getMethod()), fullPath, content); request.headers().set("Host", host); request.headers().set("Connection", HttpHeaderValues.CLOSE); @@ -89,9 +88,9 @@ public class NettyApiClient { request.headers().set(HttpHeaderNames.CONTENT_LENGTH, content.readableBytes()); } - if (apiRequest.getHeaders().size() > 0) { + if (!apiRequest.getHeaders().isEmpty()) { HttpHeaders customHeaders = new DefaultHttpHeaders(); - apiRequest.getHeaders().stream().filter(ApiRequestKeyValueDTO::isEnabled).forEach((header) -> { + apiRequest.getHeaders().stream().filter(ApiRequestKeyValueDTO::isEnabled).forEach(header -> { if(StringUtils.isNotEmpty(header.getKey()) && StringUtils.isNotEmpty(header.getValue())){ customHeaders.set(header.getKey(), header.getValue()); } diff --git a/src/main/java/com/eactive/httpmockserver/common/exception/ServerNotFoundException.java b/src/main/java/com/eactive/httpmockserver/common/exception/ServerNotFoundException.java new file mode 100644 index 0000000..7d959ae --- /dev/null +++ b/src/main/java/com/eactive/httpmockserver/common/exception/ServerNotFoundException.java @@ -0,0 +1,8 @@ +package com.eactive.httpmockserver.common.exception; + +public class ServerNotFoundException extends RuntimeException { + public ServerNotFoundException(String message) { + super(message); + } + +} diff --git a/src/main/java/com/eactive/httpmockserver/common/security/CurrentUser.java b/src/main/java/com/eactive/httpmockserver/common/security/CurrentUser.java deleted file mode 100644 index c2e19ea..0000000 --- a/src/main/java/com/eactive/httpmockserver/common/security/CurrentUser.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.eactive.httpmockserver.common.security; - -import java.lang.annotation.*; - -@Target({ElementType.PARAMETER}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface CurrentUser { -} diff --git a/src/main/java/com/eactive/httpmockserver/common/security/CurrentUserArgumentResolver.java b/src/main/java/com/eactive/httpmockserver/common/security/CurrentUserArgumentResolver.java deleted file mode 100644 index e90387f..0000000 --- a/src/main/java/com/eactive/httpmockserver/common/security/CurrentUserArgumentResolver.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.eactive.httpmockserver.common.security; - -import com.eactive.httpmockserver.user.entity.StaffUser; -import com.eactive.httpmockserver.user.entity.User; -import com.eactive.httpmockserver.user.service.UserService; -import com.eactive.httpmockserver.common.exception.NotFoundException; -import com.eactive.httpmockserver.common.exception.UserNotLoginException; -import org.apache.commons.beanutils.PropertyUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.MethodParameter; -import org.springframework.security.core.Authentication; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.support.WebDataBinderFactory; -import org.springframework.web.context.request.NativeWebRequest; -import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.method.support.ModelAndViewContainer; - -import java.lang.reflect.InvocationTargetException; - -public class CurrentUserArgumentResolver implements HandlerMethodArgumentResolver { - - @Autowired - private UserService userService; - - @Override - public boolean supportsParameter(MethodParameter parameter) { - return parameter.getParameterAnnotation(CurrentUser.class) != null && - parameter.getParameterType().equals(StaffUser.class); - } - - @Override - @Transactional - public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, - NativeWebRequest webRequest, WebDataBinderFactory binderFactory) { - Authentication authentication = (Authentication) webRequest.getUserPrincipal(); - if (authentication == null || !authentication.isAuthenticated()) { - throw new UserNotLoginException(); - } - StaffUser user = null; - try { - user = userService.findByEsntlId((String) PropertyUtils.getProperty(authentication.getPrincipal(), "esntlId")); - } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { - throw new NotFoundException("User not found"); - } - - if (user == null) throw new UserNotLoginException(); - return user; - } -} diff --git a/src/main/java/com/eactive/httpmockserver/common/validator/UniqueUserIdValidator.java b/src/main/java/com/eactive/httpmockserver/common/validator/UniqueUserIdValidator.java index 7cf932a..176fc07 100644 --- a/src/main/java/com/eactive/httpmockserver/common/validator/UniqueUserIdValidator.java +++ b/src/main/java/com/eactive/httpmockserver/common/validator/UniqueUserIdValidator.java @@ -1,8 +1,8 @@ package com.eactive.httpmockserver.common.validator; -import com.eactive.httpmockserver.user.service.UserService; import com.eactive.httpmockserver.common.exception.UserNotFoundException; import com.eactive.httpmockserver.common.util.ApplicationContextUtil; +import com.eactive.httpmockserver.user.service.UserService; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; diff --git a/src/main/java/com/eactive/httpmockserver/config/PortalAuthenticationFailureHandler.java b/src/main/java/com/eactive/httpmockserver/config/PortalAuthenticationFailureHandler.java index ab82926..380cf79 100644 --- a/src/main/java/com/eactive/httpmockserver/config/PortalAuthenticationFailureHandler.java +++ b/src/main/java/com/eactive/httpmockserver/config/PortalAuthenticationFailureHandler.java @@ -7,7 +7,8 @@ import com.eactive.httpmockserver.user.entity.StaffUser; import com.eactive.httpmockserver.user.entity.User; import com.eactive.httpmockserver.user.repository.StaffUserRepository; import com.eactive.httpmockserver.user.service.UserService; -import org.springframework.beans.factory.annotation.Autowired; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.stereotype.Service; @@ -22,12 +23,16 @@ import java.io.IOException; @Transactional public class PortalAuthenticationFailureHandler implements AuthenticationFailureHandler { - @Autowired + private static final Logger logger = LoggerFactory.getLogger(PortalAuthenticationFailureHandler.class); + UserService userService; - @Autowired StaffUserRepository staffUserRepository; + public PortalAuthenticationFailureHandler(UserService userService, StaffUserRepository staffUserRepository) { + this.userService = userService; + this.staffUserRepository = staffUserRepository; + } @Override @Transactional(propagation = Propagation.REQUIRES_NEW, noRollbackFor = {AuthenticationException.class, UserNotFoundException.class}) @@ -44,7 +49,8 @@ public class PortalAuthenticationFailureHandler implements AuthenticationFailure staffUserRepository.save((StaffUser) user); } - } catch (UserNotFoundException ignored) { + } catch (UserNotFoundException e) { + logger.error("{} login try {}", username, e.getMessage()); } request.getSession().setAttribute(LoginController.LOGIN_MESSAGE, exception.getLocalizedMessage()); diff --git a/src/main/java/com/eactive/httpmockserver/config/PortalAuthenticationSuccessHandler.java b/src/main/java/com/eactive/httpmockserver/config/PortalAuthenticationSuccessHandler.java index bae39fe..4d6df4c 100644 --- a/src/main/java/com/eactive/httpmockserver/config/PortalAuthenticationSuccessHandler.java +++ b/src/main/java/com/eactive/httpmockserver/config/PortalAuthenticationSuccessHandler.java @@ -31,7 +31,7 @@ public class PortalAuthenticationSuccessHandler implements AuthenticationSuccess userService.updateUser((User) user); String contextPath = request.getContextPath(); - response.sendRedirect(contextPath + "/"); + response.sendRedirect(contextPath + "/mgmt/routes/list_view.do"); } @Override diff --git a/src/main/java/com/eactive/httpmockserver/config/PortalConfigAppDatasource.java b/src/main/java/com/eactive/httpmockserver/config/PortalConfigAppDatasource.java index ed3f71d..d30cba7 100644 --- a/src/main/java/com/eactive/httpmockserver/config/PortalConfigAppDatasource.java +++ b/src/main/java/com/eactive/httpmockserver/config/PortalConfigAppDatasource.java @@ -3,13 +3,10 @@ package com.eactive.httpmockserver.config; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; import org.springframework.data.domain.AuditorAware; import org.springframework.data.envers.repository.support.EnversRevisionRepositoryFactoryBean; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.orm.jpa.JpaTransactionManager; -import org.springframework.transaction.PlatformTransactionManager; /** * @author diff --git a/src/main/java/com/eactive/httpmockserver/config/PortalConfigSecurity.java b/src/main/java/com/eactive/httpmockserver/config/PortalConfigSecurity.java index 9bb3c74..48425c1 100644 --- a/src/main/java/com/eactive/httpmockserver/config/PortalConfigSecurity.java +++ b/src/main/java/com/eactive/httpmockserver/config/PortalConfigSecurity.java @@ -16,6 +16,21 @@ import org.springframework.security.web.util.matcher.AntPathRequestMatcher; @EnableWebSecurity public class PortalConfigSecurity extends WebSecurityConfigurerAdapter { + private final PortalAuthenticationFailureHandler authenticationFailureHandler; + + private final PortalAuthenticationSuccessHandler authenticationSuccessHandler; + + private final PortalAuthenticationManager portalAuthenticationManager; + + @Autowired + public PortalConfigSecurity(PortalAuthenticationFailureHandler authenticationFailureHandler, + PortalAuthenticationSuccessHandler authenticationSuccessHandler, + PortalAuthenticationManager portalAuthenticationManager) { + this.authenticationFailureHandler = authenticationFailureHandler; + this.authenticationSuccessHandler = authenticationSuccessHandler; + this.portalAuthenticationManager = portalAuthenticationManager; + } + @Bean public FilterRegistrationBean xssFilterRegistrationBean() { FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); @@ -26,12 +41,6 @@ public class PortalConfigSecurity extends WebSecurityConfigurerAdapter { return registrationBean; } - @Autowired - public PortalAuthenticationFailureHandler authenticationFailureHandler; - - @Autowired - public PortalAuthenticationSuccessHandler authenticationSuccessHandler; - @Override protected void configure(HttpSecurity http) throws Exception { @@ -56,9 +65,6 @@ public class PortalConfigSecurity extends WebSecurityConfigurerAdapter { } - @Autowired - PortalAuthenticationManager portalAuthenticationManager; - @Override @Bean public PortalAuthenticationManager authenticationManager() { diff --git a/src/main/java/com/eactive/httpmockserver/config/WebMvcConfig.java b/src/main/java/com/eactive/httpmockserver/config/WebMvcConfig.java index 4b4e927..52ff01b 100644 --- a/src/main/java/com/eactive/httpmockserver/config/WebMvcConfig.java +++ b/src/main/java/com/eactive/httpmockserver/config/WebMvcConfig.java @@ -1,7 +1,6 @@ package com.eactive.httpmockserver.config; import com.eactive.httpmockserver.common.interceptor.AuthenticInterceptor; -import com.eactive.httpmockserver.common.security.CurrentUserArgumentResolver; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; @@ -42,13 +41,8 @@ public class WebMvcConfig implements WebMvcConfigurer { @Override public void addArgumentResolvers(List resolvers) { - resolvers.add(currentUserArgumentResolver()); resolvers.add(pageableHandlerMethodArgumentResolver()); } - @Bean - public CurrentUserArgumentResolver currentUserArgumentResolver() { - return new CurrentUserArgumentResolver(); - } @Bean public PageableHandlerMethodArgumentResolver pageableHandlerMethodArgumentResolver() { diff --git a/src/main/java/com/eactive/httpmockserver/home/HomeController.java b/src/main/java/com/eactive/httpmockserver/home/HomeController.java index 62efbe7..cb84b67 100644 --- a/src/main/java/com/eactive/httpmockserver/home/HomeController.java +++ b/src/main/java/com/eactive/httpmockserver/home/HomeController.java @@ -8,6 +8,6 @@ public class HomeController { @GetMapping("/") public String home() { - return "index"; + return "redirect:/mgmt/routes/list_view.do"; } } \ No newline at end of file diff --git a/src/main/java/com/eactive/httpmockserver/server/controller/ServerMgmtController.java b/src/main/java/com/eactive/httpmockserver/server/controller/ServerMgmtController.java index f9437e6..b5774ff 100644 --- a/src/main/java/com/eactive/httpmockserver/server/controller/ServerMgmtController.java +++ b/src/main/java/com/eactive/httpmockserver/server/controller/ServerMgmtController.java @@ -1,9 +1,9 @@ package com.eactive.httpmockserver.server.controller; -import com.eactive.httpmockserver.server.mapper.ServerMapper; import com.eactive.httpmockserver.server.dto.ServerDTO; import com.eactive.httpmockserver.server.dto.ServerSearch; import com.eactive.httpmockserver.server.entity.Server; +import com.eactive.httpmockserver.server.mapper.ServerMapper; import com.eactive.httpmockserver.server.service.ServerMgmtService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +15,8 @@ import org.springframework.validation.BindingResult; import org.springframework.validation.Validator; import org.springframework.web.bind.annotation.*; +import java.util.List; + @Controller @RequestMapping("/mgmt/servers") @@ -29,6 +31,8 @@ public class ServerMgmtController { @Autowired private Validator validator; + public static final String SERVER = "server"; + public static final String SERVER_EDIT = "page/servers/serverEdit"; public static final String SERVER_LIST_VIEW = "redirect:/mgmt/servers/list_view.do"; @@ -49,7 +53,7 @@ public class ServerMgmtController { @GetMapping("/create_view.do") public String createView(ModelMap model) { ServerDTO defaultServer = new ServerDTO(); - model.addAttribute("server", defaultServer); + model.addAttribute(SERVER, defaultServer); return SERVER_EDIT; } @@ -57,12 +61,12 @@ public class ServerMgmtController { public String updateView(ModelMap model, @RequestParam("id") Long id) { Server found = serverMgmtService.findById(id); ServerDTO server = serverMapper.map(found); - model.addAttribute("server", server); + model.addAttribute(SERVER, server); return SERVER_EDIT; } @PostMapping("/register.do") - public String register(@ModelAttribute("server") ServerDTO dto, + public String register(@ModelAttribute(SERVER) ServerDTO dto, BindingResult bindingResult, ModelMap model) { @@ -73,7 +77,7 @@ public class ServerMgmtController { validator.validate(dto, bindingResult); if (bindingResult.hasErrors()) { - model.addAttribute("server", dto); + model.addAttribute(SERVER, dto); return SERVER_EDIT; } @@ -83,7 +87,7 @@ public class ServerMgmtController { } @PostMapping("/update.do") - public String update(@ModelAttribute("server") ServerDTO dto, + public String update(@ModelAttribute(SERVER) ServerDTO dto, BindingResult bindingResult, ModelMap model) { @@ -94,7 +98,7 @@ public class ServerMgmtController { validator.validate(dto, bindingResult); if (bindingResult.hasErrors()) { - model.addAttribute("server", dto); + model.addAttribute(SERVER, dto); return SERVER_EDIT; } @@ -104,12 +108,10 @@ public class ServerMgmtController { } @PostMapping("/delete.do") - public String delete(@ModelAttribute ServerSearch modelSearch) { - - modelSearch.getCheckedIdForDel().forEach(id -> { + public String delete(@RequestParam("checkedIdForDel") List checkedIdForDel) { + for (String id : checkedIdForDel) { serverMgmtService.delete(Long.parseLong(id)); - }); - + } return SERVER_LIST_VIEW; } diff --git a/src/main/java/com/eactive/httpmockserver/server/dto/ServerSearch.java b/src/main/java/com/eactive/httpmockserver/server/dto/ServerSearch.java index 13ab3cb..400692b 100644 --- a/src/main/java/com/eactive/httpmockserver/server/dto/ServerSearch.java +++ b/src/main/java/com/eactive/httpmockserver/server/dto/ServerSearch.java @@ -20,8 +20,6 @@ public class ServerSearch implements BaseSearch { private String port; - private List checkedIdForDel; - @Override public List buildSearchCondition() { List models = new ArrayList<>(); @@ -77,11 +75,4 @@ public class ServerSearch implements BaseSearch { this.port = port; } - public List getCheckedIdForDel() { - return checkedIdForDel; - } - - public void setCheckedIdForDel(List checkedIdForDel) { - this.checkedIdForDel = checkedIdForDel; - } } diff --git a/src/main/java/com/eactive/httpmockserver/server/mapper/ServerMapper.java b/src/main/java/com/eactive/httpmockserver/server/mapper/ServerMapper.java index dcd1c94..d9ce30e 100644 --- a/src/main/java/com/eactive/httpmockserver/server/mapper/ServerMapper.java +++ b/src/main/java/com/eactive/httpmockserver/server/mapper/ServerMapper.java @@ -1,10 +1,10 @@ package com.eactive.httpmockserver.server.mapper; -import com.eactive.httpmockserver.server.entity.ServerRepository; import com.eactive.httpmockserver.common.exception.NotFoundException; import com.eactive.httpmockserver.server.dto.ServerDTO; import com.eactive.httpmockserver.server.entity.Server; +import com.eactive.httpmockserver.server.entity.ServerRepository; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/com/eactive/httpmockserver/server/service/ServerMgmtService.java b/src/main/java/com/eactive/httpmockserver/server/service/ServerMgmtService.java index 809ef0b..c6260e0 100644 --- a/src/main/java/com/eactive/httpmockserver/server/service/ServerMgmtService.java +++ b/src/main/java/com/eactive/httpmockserver/server/service/ServerMgmtService.java @@ -1,8 +1,8 @@ package com.eactive.httpmockserver.server.service; -import com.eactive.httpmockserver.server.entity.ServerRepository; import com.eactive.httpmockserver.common.exception.NotFoundException; import com.eactive.httpmockserver.server.entity.Server; +import com.eactive.httpmockserver.server.entity.ServerRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/eactive/httpmockserver/user/controller/AccountController.java b/src/main/java/com/eactive/httpmockserver/user/controller/AccountController.java index 66e4c42..93ad6c5 100644 --- a/src/main/java/com/eactive/httpmockserver/user/controller/AccountController.java +++ b/src/main/java/com/eactive/httpmockserver/user/controller/AccountController.java @@ -1,10 +1,8 @@ package com.eactive.httpmockserver.user.controller; +import com.eactive.httpmockserver.common.util.SecurityUtil; import com.eactive.httpmockserver.user.dto.PasswordChangeRequestDTO; -import com.eactive.httpmockserver.user.entity.StaffUser; -import com.eactive.httpmockserver.user.entity.User; import com.eactive.httpmockserver.user.service.UserService; -import com.eactive.httpmockserver.common.security.CurrentUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -18,6 +16,7 @@ import org.springframework.web.bind.annotation.PostMapping; @Controller public class AccountController { + public static final String UPDATE_PW = "page/updatePw"; @Autowired private Validator validator; @@ -25,33 +24,31 @@ public class AccountController { private UserService userService; @GetMapping("/change_password.do") - public String changePassword(ModelMap model, @ModelAttribute("passwordChangeRequest") PasswordChangeRequestDTO passwordChangeRequestDTO) { - return "page/updatePw"; + public String changePassword( @ModelAttribute("passwordChangeRequest") PasswordChangeRequestDTO passwordChangeRequestDTO) { + return UPDATE_PW; } @PostMapping(value = "/update_password.do") @Transactional public String updatePassword(ModelMap model, @ModelAttribute("passwordChangeRequest") PasswordChangeRequestDTO passwordChangeRequestDTO, - @CurrentUser StaffUser user, BindingResult result) { validator.validate(passwordChangeRequestDTO, result); if (result.hasErrors()) { model.addAttribute("errors", result); - return "page/updatePw"; + return UPDATE_PW; } String oldPassword = passwordChangeRequestDTO.getOldPassword(); String newPassword = passwordChangeRequestDTO.getNewPassword(); String newPassword2 = passwordChangeRequestDTO.getNewPassword2(); - - String resultMsg = userService.updateUserPassword(user.getUserId(), oldPassword, newPassword, newPassword2); + String resultMsg = userService.updateUserPassword(SecurityUtil.getCurrentUserEsntlId(), oldPassword, newPassword, newPassword2); model.addAttribute("resultMsg", resultMsg); model.addAttribute("passwordChangeRequest", new PasswordChangeRequestDTO()); - return "page/updatePw"; + return "redirect:/"; } diff --git a/src/main/java/com/eactive/httpmockserver/user/controller/UserMgmtController.java b/src/main/java/com/eactive/httpmockserver/user/controller/UserMgmtController.java index bc5e28d..f6edd1f 100644 --- a/src/main/java/com/eactive/httpmockserver/user/controller/UserMgmtController.java +++ b/src/main/java/com/eactive/httpmockserver/user/controller/UserMgmtController.java @@ -1,11 +1,10 @@ package com.eactive.httpmockserver.user.controller; -import com.eactive.httpmockserver.common.security.CurrentUser; +import com.eactive.httpmockserver.common.util.SecurityUtil; import com.eactive.httpmockserver.user.dto.UserRegisterDTO; import com.eactive.httpmockserver.user.dto.UserSearch; import com.eactive.httpmockserver.user.dto.UserUpdateDTO; import com.eactive.httpmockserver.user.entity.StaffUser; -import com.eactive.httpmockserver.user.entity.User; import com.eactive.httpmockserver.user.mapper.StaffUserMapper; import com.eactive.httpmockserver.user.service.StaffUserService; import org.apache.commons.lang3.StringUtils; @@ -108,10 +107,9 @@ public class UserMgmtController { @PostMapping("/delete.do") - public String delete(@CurrentUser User user, - @ModelAttribute UserSearch modelSearch) { + public String delete(@ModelAttribute UserSearch modelSearch) { modelSearch.getCheckedIdForDel().forEach(id -> { - if (!user.getEsntlId().equals(id)) { // 자기 자신은 삭제 불가 + if (!SecurityUtil.getCurrentUserEsntlId().equals(id)) { // 자기 자신은 삭제 불가 staffUserService.deleteById(id); } }); diff --git a/src/main/java/com/eactive/httpmockserver/user/dto/UserRegisterDTO.java b/src/main/java/com/eactive/httpmockserver/user/dto/UserRegisterDTO.java index e6a2793..d25db3c 100644 --- a/src/main/java/com/eactive/httpmockserver/user/dto/UserRegisterDTO.java +++ b/src/main/java/com/eactive/httpmockserver/user/dto/UserRegisterDTO.java @@ -1,11 +1,10 @@ package com.eactive.httpmockserver.user.dto; -import com.eactive.httpmockserver.user.entity.UserStatus; import com.eactive.httpmockserver.common.validator.PasswordMatch; import com.eactive.httpmockserver.common.validator.UniqueId; +import com.eactive.httpmockserver.user.entity.UserStatus; import org.hibernate.validator.constraints.Length; -import javax.validation.constraints.Email; import javax.validation.constraints.NotEmpty; import java.io.Serializable; @@ -23,7 +22,7 @@ public class UserRegisterDTO implements Serializable { */ @NotEmpty @UniqueId - @Email +// @Email private String userId; diff --git a/src/main/java/com/eactive/httpmockserver/user/dto/UserSearch.java b/src/main/java/com/eactive/httpmockserver/user/dto/UserSearch.java index 7d3bcbe..d1bf3f4 100644 --- a/src/main/java/com/eactive/httpmockserver/user/dto/UserSearch.java +++ b/src/main/java/com/eactive/httpmockserver/user/dto/UserSearch.java @@ -1,11 +1,11 @@ package com.eactive.httpmockserver.user.dto; -import com.eactive.httpmockserver.user.entity.StaffUser; -import com.eactive.httpmockserver.user.entity.UserStatus; import com.eactive.httpmockserver.common.search.BaseSearch; import com.eactive.httpmockserver.common.search.ColumnSearchModel; import com.eactive.httpmockserver.common.search.SearchCondition; import com.eactive.httpmockserver.common.search.SearchModel; +import com.eactive.httpmockserver.user.entity.StaffUser; +import com.eactive.httpmockserver.user.entity.UserStatus; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/eactive/httpmockserver/user/dto/UserUpdateDTO.java b/src/main/java/com/eactive/httpmockserver/user/dto/UserUpdateDTO.java index 2306db1..63574aa 100644 --- a/src/main/java/com/eactive/httpmockserver/user/dto/UserUpdateDTO.java +++ b/src/main/java/com/eactive/httpmockserver/user/dto/UserUpdateDTO.java @@ -1,7 +1,7 @@ package com.eactive.httpmockserver.user.dto; -import com.eactive.httpmockserver.user.entity.UserStatus; import com.eactive.httpmockserver.common.entity.EnabledStatus; +import com.eactive.httpmockserver.user.entity.UserStatus; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; diff --git a/src/main/java/com/eactive/httpmockserver/user/mapper/StaffUserMapper.java b/src/main/java/com/eactive/httpmockserver/user/mapper/StaffUserMapper.java index 1c68cc8..62c2ce8 100644 --- a/src/main/java/com/eactive/httpmockserver/user/mapper/StaffUserMapper.java +++ b/src/main/java/com/eactive/httpmockserver/user/mapper/StaffUserMapper.java @@ -1,12 +1,11 @@ package com.eactive.httpmockserver.user.mapper; +import com.eactive.httpmockserver.common.mapper.CommonMapper; +import com.eactive.httpmockserver.common.util.EncryptionUtil; import com.eactive.httpmockserver.user.dto.UserRegisterDTO; import com.eactive.httpmockserver.user.dto.UserUpdateDTO; import com.eactive.httpmockserver.user.entity.StaffUser; -import com.eactive.httpmockserver.common.mapper.CommonMapper; -import com.eactive.httpmockserver.common.util.EncryptionUtil; -import org.apache.commons.lang3.StringUtils; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.ReportingPolicy; diff --git a/src/main/java/com/eactive/httpmockserver/user/service/StaffUserService.java b/src/main/java/com/eactive/httpmockserver/user/service/StaffUserService.java index 14c445f..3755d83 100644 --- a/src/main/java/com/eactive/httpmockserver/user/service/StaffUserService.java +++ b/src/main/java/com/eactive/httpmockserver/user/service/StaffUserService.java @@ -1,10 +1,10 @@ package com.eactive.httpmockserver.user.service; +import com.eactive.httpmockserver.common.entity.EnabledStatus; +import com.eactive.httpmockserver.common.exception.UserNotFoundException; import com.eactive.httpmockserver.user.entity.StaffUser; import com.eactive.httpmockserver.user.entity.UserStatus; import com.eactive.httpmockserver.user.repository.StaffUserRepository; -import com.eactive.httpmockserver.common.entity.EnabledStatus; -import com.eactive.httpmockserver.common.exception.UserNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/eactive/httpmockserver/user/service/UserService.java b/src/main/java/com/eactive/httpmockserver/user/service/UserService.java index 5682bea..f77958d 100644 --- a/src/main/java/com/eactive/httpmockserver/user/service/UserService.java +++ b/src/main/java/com/eactive/httpmockserver/user/service/UserService.java @@ -1,11 +1,11 @@ package com.eactive.httpmockserver.user.service; -import com.eactive.httpmockserver.user.entity.StaffUser; -import com.eactive.httpmockserver.user.entity.User; -import com.eactive.httpmockserver.user.repository.StaffUserRepository; import com.eactive.httpmockserver.common.entity.EnabledStatus; import com.eactive.httpmockserver.common.exception.UserNotFoundException; import com.eactive.httpmockserver.common.util.EncryptionUtil; +import com.eactive.httpmockserver.user.entity.StaffUser; +import com.eactive.httpmockserver.user.entity.User; +import com.eactive.httpmockserver.user.repository.StaffUserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; @@ -39,8 +39,8 @@ public class UserService implements UserDetailsService { return staffUserRepository.findByUserId(userId).orElseThrow(() -> new UserNotFoundException(USER_NOT_FOUND_MESSAGE)); } - public String updateUserPassword(String userId, String oldPassword, String newPassword, String newPassword2) { - User user = staffUserRepository.findByUserId(userId).orElseThrow(() -> new UserNotFoundException(USER_NOT_FOUND_MESSAGE)); + public String updateUserPassword(String esntlId, String oldPassword, String newPassword, String newPassword2) { + User user = staffUserRepository.findById(esntlId).orElseThrow(() -> new UserNotFoundException(USER_NOT_FOUND_MESSAGE)); String encryptedOldPass = encryptionUtil.encryptPassword(oldPassword, user.getUserId()); String resultMsg = null;