From c57aa7e4b8eeb95a2cec562d265f7a9f0fbfe41a Mon Sep 17 00:00:00 2001 From: Wasiullah Khan Jadoon Date: Tue, 16 Dec 2025 16:32:15 +0500 Subject: [PATCH] Wasi/BS-1344 added the exception handling for the email --- .../configuration/constant/ERRCode.java | 1 + .../exception/ApplicationExceptionMapper.java | 2 +- .../exception/EmailAlreadyUsedException.java | 15 +++++++++++++ .../exception/UserAlreadyExistsException.java | 22 ++++++------------- .../aconnect/security/dto/SignupRequest.java | 1 + .../service/AuthenticationService.java | 11 +++++++--- .../repository/UserRepository.java | 1 + 7 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 common/src/main/java/com/mfsys/common/configuration/exception/EmailAlreadyUsedException.java diff --git a/common/src/main/java/com/mfsys/common/configuration/constant/ERRCode.java b/common/src/main/java/com/mfsys/common/configuration/constant/ERRCode.java index 7e5d520..91fe79b 100644 --- a/common/src/main/java/com/mfsys/common/configuration/constant/ERRCode.java +++ b/common/src/main/java/com/mfsys/common/configuration/constant/ERRCode.java @@ -4,6 +4,7 @@ import com.mfsys.common.configuration.exception.ErrorMessage; public enum ERRCode implements ErrorMessage { USER_ALREADY_EXISTS("ERR_001", "User already exists"), + EMAIL_ALREADY_USED("ERR_002", "Email already used with username {0}"), ; private String code; diff --git a/common/src/main/java/com/mfsys/common/configuration/exception/ApplicationExceptionMapper.java b/common/src/main/java/com/mfsys/common/configuration/exception/ApplicationExceptionMapper.java index 0370565..7e8514c 100644 --- a/common/src/main/java/com/mfsys/common/configuration/exception/ApplicationExceptionMapper.java +++ b/common/src/main/java/com/mfsys/common/configuration/exception/ApplicationExceptionMapper.java @@ -30,7 +30,7 @@ public class ApplicationExceptionMapper { @ExceptionHandler(value = {ApplicationException.class}) protected ResponseEntity handleConflict(ApplicationException ex, WebRequest request) { logExceptionStackTrace(ex); - return new ResponseEntity(new APIError(ex.getErrorCode(), ex.getArguments(), ex.getLocalizedMessage(), + return new ResponseEntity<>(new APIError(ex.getErrorCode(), ex.getArguments(), ex.getErrorDescription(), MDC.get("request_id")), HttpStatus.BAD_REQUEST); } diff --git a/common/src/main/java/com/mfsys/common/configuration/exception/EmailAlreadyUsedException.java b/common/src/main/java/com/mfsys/common/configuration/exception/EmailAlreadyUsedException.java new file mode 100644 index 0000000..65c27a9 --- /dev/null +++ b/common/src/main/java/com/mfsys/common/configuration/exception/EmailAlreadyUsedException.java @@ -0,0 +1,15 @@ +package com.mfsys.common.configuration.exception; + +import com.mfsys.common.configuration.constant.ERRCode; + +public class EmailAlreadyUsedException extends ApplicationException { + + public EmailAlreadyUsedException(String porOrgacode, String existingUsername) { + super(porOrgacode, ERRCode.EMAIL_ALREADY_USED, existingUsername); + } + + public EmailAlreadyUsedException(String porOrgacode, String existingUsername, Throwable cause) { + super(porOrgacode, ERRCode.EMAIL_ALREADY_USED, existingUsername); + initCause(cause); + } +} diff --git a/common/src/main/java/com/mfsys/common/configuration/exception/UserAlreadyExistsException.java b/common/src/main/java/com/mfsys/common/configuration/exception/UserAlreadyExistsException.java index fa20ad8..62563d9 100644 --- a/common/src/main/java/com/mfsys/common/configuration/exception/UserAlreadyExistsException.java +++ b/common/src/main/java/com/mfsys/common/configuration/exception/UserAlreadyExistsException.java @@ -2,25 +2,17 @@ package com.mfsys.common.configuration.exception; import com.mfsys.common.configuration.constant.ERRCode; +public class UserAlreadyExistsException extends ApplicationException { -public class UserAlreadyExistsException extends ApplicationException{ - - private static final String POR_ORGA_CODE = "DEFAULT"; - - - public UserAlreadyExistsException() { - super(POR_ORGA_CODE,ERRCode.USER_ALREADY_EXISTS); - } - - public UserAlreadyExistsException(Throwable cause) { - super(POR_ORGA_CODE,ERRCode.USER_ALREADY_EXISTS, cause); + public UserAlreadyExistsException(String porOrgacode) { + super(porOrgacode, ERRCode.USER_ALREADY_EXISTS); } - public UserAlreadyExistsException(String message) { - super(POR_ORGA_CODE,ERRCode.USER_ALREADY_EXISTS, message); + public UserAlreadyExistsException(String porOrgacode, Throwable cause) { + super(porOrgacode, ERRCode.USER_ALREADY_EXISTS, cause); } - public UserAlreadyExistsException(String message, Throwable cause) { - super(POR_ORGA_CODE,ERRCode.USER_ALREADY_EXISTS, message, cause); + public UserAlreadyExistsException(String porOrgacode, Object... arguments) { + super(porOrgacode, ERRCode.USER_ALREADY_EXISTS, arguments); } } \ No newline at end of file diff --git a/econnect/src/main/java/com/mfsys/aconnect/security/dto/SignupRequest.java b/econnect/src/main/java/com/mfsys/aconnect/security/dto/SignupRequest.java index f63fe60..9b51fdb 100644 --- a/econnect/src/main/java/com/mfsys/aconnect/security/dto/SignupRequest.java +++ b/econnect/src/main/java/com/mfsys/aconnect/security/dto/SignupRequest.java @@ -12,4 +12,5 @@ public class SignupRequest { private String password; private String email; private String fullName; + private String porOrgacode; } diff --git a/econnect/src/main/java/com/mfsys/aconnect/security/service/AuthenticationService.java b/econnect/src/main/java/com/mfsys/aconnect/security/service/AuthenticationService.java index 9dc8fd6..c323b41 100644 --- a/econnect/src/main/java/com/mfsys/aconnect/security/service/AuthenticationService.java +++ b/econnect/src/main/java/com/mfsys/aconnect/security/service/AuthenticationService.java @@ -2,6 +2,7 @@ package com.mfsys.aconnect.security.service; import com.mfsys.aconnect.security.dto.SignupRequest; import com.mfsys.aconnect.security.dto.SignupResponse; +import com.mfsys.common.configuration.exception.EmailAlreadyUsedException; import com.mfsys.common.configuration.exception.UserAlreadyExistsException; import com.mfsys.common.configuration.service.JwtService; import com.mfsys.common.configuration.service.PasswordEncryptionService; @@ -51,12 +52,16 @@ public class AuthenticationService { @Transactional public SignupResponse signup(SignupRequest request){ - SignupResponse response = new SignupResponse(); + String porOrgacode = request.getPorOrgacode(); if(userAlreadyExists(request.getUsername())){ - throw new UserAlreadyExistsException(); - + throw new UserAlreadyExistsException(request.getPorOrgacode()); } + userRepository.findByEmailAndIsActiveTrue(request.getEmail()) + .ifPresent(existingUser -> { + throw new EmailAlreadyUsedException(porOrgacode, existingUser.getUserId()); + }); + User user = new User(); user.setUserId(request.getUsername()); user.setPassword(passwordEncryptionService.hashPassword(request.getPassword())); diff --git a/econnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java b/econnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java index da37d7c..13c2d1f 100644 --- a/econnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java +++ b/econnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java @@ -10,4 +10,5 @@ import java.util.Optional; public interface UserRepository extends JpaRepository { Optional findByUserIdAndIsActiveTrue(String userId); Optional findByEmail(String email); + Optional findByEmailAndIsActiveTrue(String email); }