diff --git a/authentication/authentication-otp-service/src/main/java/io/mosip/authentication/otp/service/controller/OTPController.java b/authentication/authentication-otp-service/src/main/java/io/mosip/authentication/otp/service/controller/OTPController.java index 1f3d09bbbfd..9590b9a616e 100644 --- a/authentication/authentication-otp-service/src/main/java/io/mosip/authentication/otp/service/controller/OTPController.java +++ b/authentication/authentication-otp-service/src/main/java/io/mosip/authentication/otp/service/controller/OTPController.java @@ -1,8 +1,11 @@ package io.mosip.authentication.otp.service.controller; +import static io.mosip.authentication.core.constant.IdAuthConfigKeyConstants.AUTHENTICATION_ERROR_EVENTING_ENABLED; + import java.util.Objects; import java.util.Optional; +import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; @@ -14,7 +17,10 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityScheme; import io.swagger.v3.oas.annotations.tags.Tag; + +import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.validation.Errors; import org.springframework.web.bind.WebDataBinder; @@ -94,11 +100,23 @@ public class OTPController { @Autowired(required = false) private AuthenticationErrorEventingPublisher authenticationErrorEventingPublisher; + + @Value("${"+ AUTHENTICATION_ERROR_EVENTING_ENABLED +":false}") + private boolean isEventingEnabled; @InitBinder private void initBinder(WebDataBinder binder) { binder.setValidator(otpRequestValidator); } + + @PostConstruct + public void init() { + if (isEventingEnabled) { + if (Objects.isNull(authenticationErrorEventingPublisher)) { + throw new BeanCreationException(AuthenticationErrorEventingPublisher.class.getName(), "Failed to create a bean"); + } + } + } /** * send OtpRequestDTO request to generate OTP and received OtpResponseDTO as @@ -160,7 +178,7 @@ public OtpResponseDTO generateOTP(@Valid @RequestBody OtpRequestDTO otpRequestDt throw authTransactionHelper.createDataValidationException(authTxnBuilder, e, requestWithMetadata); } catch (IdAuthenticationBusinessException e) { logger.error(IdAuthCommonConstants.SESSION_ID, e.getClass().toString(), e.getErrorCode(), e.getErrorText()); - if (authenticationErrorEventingPublisher != null) { + if (isEventingEnabled) { if (IdAuthenticationErrorConstants.ID_NOT_AVAILABLE.getErrorCode().equals(e.getErrorCode())) { authenticationErrorEventingPublisher.notify(otpRequestDto, request.getHeader("signature"), partner, e, otpRequestDto.getMetadata()); diff --git a/authentication/authentication-service/src/main/java/io/mosip/authentication/service/controller/AuthController.java b/authentication/authentication-service/src/main/java/io/mosip/authentication/service/controller/AuthController.java index a15be317a04..035a1767993 100644 --- a/authentication/authentication-service/src/main/java/io/mosip/authentication/service/controller/AuthController.java +++ b/authentication/authentication-service/src/main/java/io/mosip/authentication/service/controller/AuthController.java @@ -1,11 +1,16 @@ package io.mosip.authentication.service.controller; +import static io.mosip.authentication.core.constant.IdAuthConfigKeyConstants.AUTHENTICATION_ERROR_EVENTING_ENABLED; + import java.util.Objects; import java.util.Optional; +import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.validation.Errors; import org.springframework.validation.annotation.Validated; @@ -92,6 +97,9 @@ public class AuthController { @Autowired(required = false) private AuthenticationErrorEventingPublisher authenticationErrorEventingPublisher; + + @Value("${"+ AUTHENTICATION_ERROR_EVENTING_ENABLED +":false}") + private boolean isEventingEnabled; /** @@ -102,6 +110,15 @@ public class AuthController { private void initAuthRequestBinder(WebDataBinder binder) { binder.setValidator(authRequestValidator); } + + @PostConstruct + public void init() { + if (isEventingEnabled) { + if (Objects.isNull(authenticationErrorEventingPublisher)) { + throw new BeanCreationException(AuthenticationErrorEventingPublisher.class.getName(), "Failed to create a bean"); + } + } + } /** * authenticateRequest - method to authenticate request. @@ -162,7 +179,7 @@ public AuthResponseDTO authenticateIndividual(@Validated @RequestBody AuthReques } catch (IdAuthenticationBusinessException e) { mosipLogger.error(IdAuthCommonConstants.SESSION_ID, this.getClass().getSimpleName(), "authenticateApplication", e.getErrorCode() + " : " + e.getErrorText()); - if (authenticationErrorEventingPublisher != null) { + if (isEventingEnabled) { if (IdAuthenticationErrorConstants.ID_NOT_AVAILABLE.getErrorCode().equals(e.getErrorCode())) { authenticationErrorEventingPublisher.notify(authrequestdto, request.getHeader("signature"), partner, e, authrequestdto.getMetadata()); diff --git a/authentication/authentication-service/src/main/java/io/mosip/authentication/service/kyc/controller/KycAuthController.java b/authentication/authentication-service/src/main/java/io/mosip/authentication/service/kyc/controller/KycAuthController.java index 2ea628bd92f..e655bb9e2f9 100644 --- a/authentication/authentication-service/src/main/java/io/mosip/authentication/service/kyc/controller/KycAuthController.java +++ b/authentication/authentication-service/src/main/java/io/mosip/authentication/service/kyc/controller/KycAuthController.java @@ -1,13 +1,19 @@ package io.mosip.authentication.service.kyc.controller; +import static io.mosip.authentication.core.constant.IdAuthConfigKeyConstants.AUTHENTICATION_ERROR_EVENTING_ENABLED; + import java.util.Map; import java.util.Objects; import java.util.Optional; +import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import io.mosip.authentication.core.indauth.dto.*; + +import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.validation.Errors; import org.springframework.validation.annotation.Validated; @@ -102,6 +108,9 @@ public class KycAuthController { @Autowired(required = false) private AuthenticationErrorEventingPublisher authenticationErrorEventingPublisher; + + @Value("${"+ AUTHENTICATION_ERROR_EVENTING_ENABLED +":false}") + private boolean isEventingEnabled; /** * @@ -129,6 +138,15 @@ private void initEKycBinder(WebDataBinder binder) { private void initKycExchangeBinder(WebDataBinder binder) { binder.setValidator(kycExchangeValidator); } + + @PostConstruct + public void init() { + if (isEventingEnabled) { + if (Objects.isNull(authenticationErrorEventingPublisher)) { + throw new BeanCreationException(AuthenticationErrorEventingPublisher.class.getName(), "Failed to create a bean"); + } + } + } /** @@ -197,7 +215,7 @@ public EKycAuthResponseDTO processKyc(@Validated @RequestBody EkycAuthRequestDTO } catch (IdAuthenticationBusinessException e) { mosipLogger.error(IdAuthCommonConstants.SESSION_ID, this.getClass().getSimpleName(), "processEKyc", e.getErrorTexts().isEmpty() ? "" : e.getErrorText()); - if (authenticationErrorEventingPublisher != null) { + if (isEventingEnabled) { if (IdAuthenticationErrorConstants.ID_NOT_AVAILABLE.getErrorCode().equals(e.getErrorCode())) { authenticationErrorEventingPublisher.notify(ekycAuthRequestDTO, request.getHeader("signature"), partner, e, ekycAuthRequestDTO.getMetadata()); @@ -280,7 +298,7 @@ public KycAuthResponseDTO processKycAuth(@Validated @RequestBody KycAuthRequestD } catch (IdAuthenticationBusinessException e) { mosipLogger.error(IdAuthCommonConstants.SESSION_ID, this.getClass().getSimpleName(), "processKycAuth", e.getErrorTexts().isEmpty() ? "" : e.getErrorText()); - if (authenticationErrorEventingPublisher != null) { + if (isEventingEnabled) { if (IdAuthenticationErrorConstants.ID_NOT_AVAILABLE.getErrorCode().equals(e.getErrorCode())) { authenticationErrorEventingPublisher.notify(authRequestDTO, request.getHeader("signature"), partner, e, authRequestDTO.getMetadata());