diff --git a/tomcat/src/main/java/nextstep/jwp/controller/ResisterController.java b/tomcat/src/main/java/nextstep/jwp/controller/ResisterController.java index 11e62f82ab..0b1fb7d71b 100644 --- a/tomcat/src/main/java/nextstep/jwp/controller/ResisterController.java +++ b/tomcat/src/main/java/nextstep/jwp/controller/ResisterController.java @@ -26,6 +26,10 @@ protected void doPost(HttpRequest httpRequest, HttpResponse httpResponse) throws String email = httpRequest.getParam(EMAIL); String password = httpRequest.getParam(PASSWORD); + if (isDuplicateAccount(httpResponse, account)) { + return; + } + User user = new User(account, password, email); InMemoryUserRepository.save(user); LOG.info("회원가입 성공한 회원 : {}", user); @@ -37,6 +41,17 @@ protected void doPost(HttpRequest httpRequest, HttpResponse httpResponse) throws httpResponse.setLocation(INDEX_PAGE); } + private boolean isDuplicateAccount(HttpResponse httpResponse, String account) throws IOException { + if (InMemoryUserRepository.findByAccount(account).isPresent()) { + String content = FileReader.read(REGISTER_PAGE); + httpResponse.setHttpStatus(HttpStatus.BAD_REQUEST); + httpResponse.setContentType(ContentType.TEXT_HTML); + httpResponse.setBody(content); + return true; + } + return false; + } + @Override protected void doGet(HttpRequest httpRequest, HttpResponse httpResponse) throws IOException { String content = FileReader.read(REGISTER_PAGE); diff --git a/tomcat/src/main/java/org/apache/response/HttpStatus.java b/tomcat/src/main/java/org/apache/response/HttpStatus.java index 364b2a9cb2..c9c443ba21 100644 --- a/tomcat/src/main/java/org/apache/response/HttpStatus.java +++ b/tomcat/src/main/java/org/apache/response/HttpStatus.java @@ -4,6 +4,7 @@ public enum HttpStatus { OK("200"), FOUND("302"), + BAD_REQUEST("400"), UNAUTHORIZED("401"), NOT_FOUND("404"), METHOD_NOT_ALLOWED("405");