sonar 대응
This commit is contained in:
@@ -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<String> handleRequest(HttpServletRequest httpRequest) {
|
||||
public ResponseEntity<String> 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<MockCondition> conditions, MockRequest request, Map<String, String> 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<String, String> 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+10
-7
@@ -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<String> ids) {
|
||||
for (String id : ids) {
|
||||
mockRouteService.deleteById(Long.parseLong(id));
|
||||
});
|
||||
}
|
||||
mockRouteService.initAllRoutes();
|
||||
return MOCK_ROUTE_LIST_VIEW;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -13,8 +13,6 @@ public class MockRouteSearch implements BaseSearch<MockRoute> {
|
||||
|
||||
private String name;
|
||||
|
||||
private List<String> checkedIdForDel;
|
||||
|
||||
@Override
|
||||
public List<SearchModel> buildSearchCondition() {
|
||||
List<SearchModel> models = new ArrayList<>();
|
||||
@@ -30,11 +28,4 @@ public class MockRouteSearch implements BaseSearch<MockRoute> {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public List<String> getCheckedIdForDel() {
|
||||
return checkedIdForDel;
|
||||
}
|
||||
|
||||
public void setCheckedIdForDel(List<String> checkedIdForDel) {
|
||||
this.checkedIdForDel = checkedIdForDel;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,8 +73,4 @@ public class MockRoute {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public void updateFields(MockRoute update) {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,23 +77,26 @@ public abstract class MockRouteMapper {
|
||||
public List<MockHeaderDTO> mapHeadersToList(Map<String, String> headers) {
|
||||
List<MockHeaderDTO> list = new ArrayList<>();
|
||||
if (headers != null) {
|
||||
headers.forEach((key, value) -> {
|
||||
for (Map.Entry<String, String> 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<String, String> mapHeadersToMap(List<MockHeaderDTO> headers) {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
if (headers != null) {
|
||||
headers.forEach(header -> {
|
||||
for (MockHeaderDTO header : headers) {
|
||||
map.put(header.getKey(), header.getValue());
|
||||
});
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
@@ -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<MockRoute> allRoutes = new ArrayList<MockRoute>();
|
||||
private List<MockRoute> allRoutes = new ArrayList<>();
|
||||
|
||||
public List<MockRoute> 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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
+20
-12
@@ -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<List<ApiCollectionDTO>> listApiRequests(@CurrentUser StaffUser user) {
|
||||
public ResponseEntity<List<ApiCollectionDTO>> listApiRequests() {
|
||||
StaffUser user = userService.findByEsntlId(SecurityUtil.getCurrentUserEsntlId());
|
||||
List<ApiCollection> collections = apiRequestMgmtService.getMyApis(user);
|
||||
return ResponseEntity.ok(apiRequestMapper.mapCollections(collections));
|
||||
}
|
||||
|
||||
@PostMapping("/mgmt/collections/create.do")
|
||||
public ResponseEntity<String> 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<String> 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<String> 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<String> 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<String> removeApiFromCollection(@PathVariable(name = "id") String id,
|
||||
@RequestBody ApiRequestDTO dto) {
|
||||
apiRequestMgmtService.removeApiFromCollection(id, dto.getId());
|
||||
return ResponseEntity.ok("success");
|
||||
return ResponseEntity.ok(SUCCESS);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<ApiRequestInfo, String>, JpaSpecificationExecutor<ApiRequestInfo> {
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
+2
-2
@@ -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);
|
||||
});
|
||||
|
||||
@@ -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<ApiResponse> handleRequest(ApiRequestDTO apiRequest) throws Exception {
|
||||
public CompletableFuture<ApiResponse> 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());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.eactive.httpmockserver.common.exception;
|
||||
|
||||
public class ServerNotFoundException extends RuntimeException {
|
||||
public ServerNotFoundException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package com.eactive.httpmockserver.common.security;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Target({ElementType.PARAMETER})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
public @interface CurrentUser {
|
||||
}
|
||||
-49
@@ -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;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+10
-4
@@ -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());
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<XssEscapeServletFilter> xssFilterRegistrationBean() {
|
||||
FilterRegistrationBean<XssEscapeServletFilter> 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() {
|
||||
|
||||
@@ -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<HandlerMethodArgumentResolver> resolvers) {
|
||||
resolvers.add(currentUserArgumentResolver());
|
||||
resolvers.add(pageableHandlerMethodArgumentResolver());
|
||||
}
|
||||
@Bean
|
||||
public CurrentUserArgumentResolver currentUserArgumentResolver() {
|
||||
return new CurrentUserArgumentResolver();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PageableHandlerMethodArgumentResolver pageableHandlerMethodArgumentResolver() {
|
||||
|
||||
@@ -8,6 +8,6 @@ public class HomeController {
|
||||
|
||||
@GetMapping("/")
|
||||
public String home() {
|
||||
return "index";
|
||||
return "redirect:/mgmt/routes/list_view.do";
|
||||
}
|
||||
}
|
||||
+14
-12
@@ -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<String> checkedIdForDel) {
|
||||
for (String id : checkedIdForDel) {
|
||||
serverMgmtService.delete(Long.parseLong(id));
|
||||
});
|
||||
|
||||
}
|
||||
return SERVER_LIST_VIEW;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,8 +20,6 @@ public class ServerSearch implements BaseSearch<Server> {
|
||||
|
||||
private String port;
|
||||
|
||||
private List<String> checkedIdForDel;
|
||||
|
||||
@Override
|
||||
public List<SearchModel> buildSearchCondition() {
|
||||
List<SearchModel> models = new ArrayList<>();
|
||||
@@ -77,11 +75,4 @@ public class ServerSearch implements BaseSearch<Server> {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public List<String> getCheckedIdForDel() {
|
||||
return checkedIdForDel;
|
||||
}
|
||||
|
||||
public void setCheckedIdForDel(List<String> checkedIdForDel) {
|
||||
this.checkedIdForDel = checkedIdForDel;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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:/";
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user