From 82a879cf2db23245e9d00496bf01b737750fa330 Mon Sep 17 00:00:00 2001 From: nisha Date: Wed, 6 Nov 2024 11:17:06 +0530 Subject: [PATCH] Fixed bug of login attempt --- .../dao/ApplicationAmendmentRequestDao.java | 5 +-- .../gepafin/tendermanagement/dao/UserDao.java | 20 +++++++---- .../ApplicationAmendmentRequestEnum.java | 2 +- .../ApplicationAmendmentRequestService.java | 2 +- ...pplicationAmendmentRequestServiceImpl.java | 4 +-- .../service/impl/AuthenticationService.java | 33 +++++++++++++++---- .../service/impl/UserServiceImpl.java | 2 +- ...ApplicationAmendmentRequestController.java | 6 ++-- 8 files changed, 52 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index 3c74fbf2..6524900b 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -207,7 +207,7 @@ public class ApplicationAmendmentRequestDao { applicationAmendmentRequestEntity.setIsEmail(applicationAmendmentRequest.getIsSendEmail()); applicationAmendmentRequestEntity.setIsNotification(applicationAmendmentRequest.getIsSendNotification()); applicationAmendmentRequestEntity.setStartDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); - applicationAmendmentRequestEntity.setStatus(ApplicationAmendmentRequestEnum.AWATING.getValue()); + applicationAmendmentRequestEntity.setStatus(ApplicationAmendmentRequestEnum.AWAITING.getValue()); ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluation(applicationEvaluationId); applicationAmendmentRequestEntity.setApplicationEvaluationEntity(applicationEvaluationEntity); @@ -519,8 +519,9 @@ public class ApplicationAmendmentRequestDao { log.info("Updating application amendement with status: {}", id); ApplicationAmendmentRequestEntity existingApplicationAmendment = validateApplicationAmendmentRequest(id); - if(Boolean.TRUE.equals(existingApplicationAmendment.getStatus().equals(ApplicationAmendmentRequestEnum.AWATING.getValue())) && Boolean.TRUE.equals(statusTypeEnum.equals(ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED))){ + if(Boolean.TRUE.equals(existingApplicationAmendment.getStatus().equals(ApplicationAmendmentRequestEnum.AWAITING.getValue())) && Boolean.TRUE.equals(statusTypeEnum.equals(ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED))){ existingApplicationAmendment.setStatus(ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED.getValue()); + existingApplicationAmendment.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); applicationAmendmentRequestRepository.save(existingApplicationAmendment); } ApplicationAmendmentRequestResponse response = convertEntityToResponse(existingApplicationAmendment); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java index 33f235a2..53d21fc5 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java @@ -5,10 +5,7 @@ import jakarta.servlet.http.HttpServletResponse; import net.gepafin.tendermanagement.config.SamlSuccessHandler; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; -import net.gepafin.tendermanagement.entities.BeneficiaryEntity; -import net.gepafin.tendermanagement.entities.HubEntity; -import net.gepafin.tendermanagement.entities.RoleEntity; -import net.gepafin.tendermanagement.entities.UserEntity; +import net.gepafin.tendermanagement.entities.*; import net.gepafin.tendermanagement.enums.RoleStatusEnum; import net.gepafin.tendermanagement.enums.UserStatusEnum; import net.gepafin.tendermanagement.model.request.*; @@ -80,6 +77,9 @@ public class UserDao { @Autowired private HubService hubService; + @Autowired + private AuthenticationService authenticationService; + public JWTToken createUser(HttpServletRequest request, String tempToken, UserReq userReq) { if(StringUtils.isEmpty(userReq.getHubUuid())) { @@ -92,6 +92,14 @@ public class UserDao { BeneficiaryEntity beneficiary = createBeneficiary(roleEntity, userReq, hub); UserEntity userEntity = convertUserRequestToUserEntity(beneficiary, roleEntity, userReq, hub); log.info("User created with ID: {}", userEntity.getId()); + LoginReq loginReq=new LoginReq(); + loginReq.setEmail(userEntity.getEmail()); + if(userEntity!=null){ + LoginAttemptEntity loginAttemptEntity =authenticationService.prepareLoginAttemptEntity(loginReq, request); + log.info("Authentication failed for email: {}", loginReq.getEmail()); + loginAttemptEntity.setUserId(userEntity.getId()); + authenticationService.createSuccessLoginAttempt(loginAttemptEntity); + } return authService.getJWTTokenBean(userEntity, Boolean.TRUE); } @@ -403,8 +411,8 @@ public class UserDao { return userResponseBeans; } - public JWTToken validateExistingUserToken(String token) { - return authService.validateExistingUserToken(token); + public JWTToken validateExistingUserToken(HttpServletRequest request,String token) { + return authService.validateExistingUserToken(request,token); } public UserSamlResponse validateNewUserToken(String token) { diff --git a/src/main/java/net/gepafin/tendermanagement/enums/ApplicationAmendmentRequestEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/ApplicationAmendmentRequestEnum.java index 0552fdc0..d25ef71d 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/ApplicationAmendmentRequestEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/ApplicationAmendmentRequestEnum.java @@ -3,7 +3,7 @@ package net.gepafin.tendermanagement.enums; import com.fasterxml.jackson.annotation.JsonValue; public enum ApplicationAmendmentRequestEnum { - AWATING("AWATING"), + AWAITING("AWAITING"), RESPONSE_RECEIVED("RESPONSE_RECEIVED"), CLOSE("CLOSE"), EXPIRED("EXPIRED"); diff --git a/src/main/java/net/gepafin/tendermanagement/service/ApplicationAmendmentRequestService.java b/src/main/java/net/gepafin/tendermanagement/service/ApplicationAmendmentRequestService.java index a6112bf0..2f536da7 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/ApplicationAmendmentRequestService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/ApplicationAmendmentRequestService.java @@ -23,7 +23,7 @@ public interface ApplicationAmendmentRequestService { ApplicationAmendmentRequestResponse closeAmendmentRequest(HttpServletRequest request, Long id, CloseAmendmentRequest closeAmendmentRequest); ApplicationAmendmentRequestResponse extendResponseDays(HttpServletRequest request, Long id, Long addedDays); public ApplicationAmendmentRequestResponse getAmendmentByApplicationId(HttpServletRequest request,Long applicationId); - public ApplicationAmendmentRequestResponse updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationAmendmentRequestEnum status); + public ApplicationAmendmentRequestResponse updateApplicationAmendmentStatus(HttpServletRequest request, Long applicationAmendmentId, ApplicationAmendmentRequestEnum status); void sendReminderEmail(HttpServletRequest request,Long amendmentId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationAmendmentRequestServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationAmendmentRequestServiceImpl.java index 4d212377..64967da1 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationAmendmentRequestServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationAmendmentRequestServiceImpl.java @@ -95,8 +95,8 @@ public class ApplicationAmendmentRequestServiceImpl implements ApplicationAmendm return applicationAmendmentRequestDao.getAmendmentByApplicationId(request,applicationId); } @Override - public ApplicationAmendmentRequestResponse updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationAmendmentRequestEnum status) { - return applicationAmendmentRequestDao.updateApplicationAmendmentStatus(applicationId, status); + public ApplicationAmendmentRequestResponse updateApplicationAmendmentStatus(HttpServletRequest request, Long applicationAmendmentId, ApplicationAmendmentRequestEnum status) { + return applicationAmendmentRequestDao.updateApplicationAmendmentStatus(applicationAmendmentId, status); } @Override diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java b/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java index 5a2d9ded..ddd74035 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java @@ -79,6 +79,7 @@ public class AuthenticationService { UserEntity user=null; LoginAttemptEntity loginAttemptEntity = prepareLoginAttemptEntity(loginReq, request); + try { log.info("Attempting login for email: {}", loginReq.getEmail()); String emailWithHubId = loginReq.getEmail()+":"+loginReq.getHubUuid(); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( @@ -94,11 +95,18 @@ public class AuthenticationService { throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG)); } + loginAttemptEntity.setUserId(user.getId()); createSuccessLoginAttempt(loginAttemptEntity); + } catch (Exception e) { + log.info("Authentication failed for email: {}", loginReq.getEmail()); + loginAttemptEntity.setUserId(user.getId()); + createFailedLoginAttempt(loginAttemptEntity, e.getMessage()); + throw e; + } return getJWTTokenBean(user, loginReq.getRememberMe()); } - private LoginAttemptEntity prepareLoginAttemptEntity(LoginReq loginUserReq, HttpServletRequest request) { + public LoginAttemptEntity prepareLoginAttemptEntity(LoginReq loginUserReq, HttpServletRequest request) { String ipAddress = Utils.getClientIpAddress(request); String userAgent = request.getHeader("user-agent"); LoginAttemptEntity loginAttemptEntity = new LoginAttemptEntity(); @@ -109,11 +117,11 @@ public class AuthenticationService { return loginAttemptEntity; } - private void createSuccessLoginAttempt(LoginAttemptEntity loginAttemptEntity) { + public void createSuccessLoginAttempt(LoginAttemptEntity loginAttemptEntity) { loginAttemptEntity.setResult(LoginAttemptResultEnum.SUCCESS.getValue()); loginAttemptDao.createLoginAttempt(loginAttemptEntity); } - private void createFailedLoginAttempt(LoginAttemptEntity loginAttemptEntity, String errorMsg) { + public void createFailedLoginAttempt(LoginAttemptEntity loginAttemptEntity, String errorMsg) { loginAttemptEntity.setResult(LoginAttemptResultEnum.FAILED.getValue()); loginAttemptEntity.setErrorMsg(errorMsg); loginAttemptDao.createLoginAttempt(loginAttemptEntity); @@ -184,13 +192,17 @@ public class AuthenticationService { SecurityContextHolder.clearContext(); } - public JWTToken validateExistingUserToken(String token) { + public JWTToken validateExistingUserToken(HttpServletRequest request,String token) { SamlResponseEntity samlResponseLogEntity = samlResponseLogRepository.findByToken(token); if (samlResponseLogEntity == null) { log.info("Invalid spid login token : {}", token); throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_TOKEN_MSG)); } + LoginReq loginReq=new LoginReq(); + Long userId=null; + LoginAttemptEntity loginAttemptEntity =new LoginAttemptEntity(); + try { HubEntity hub = hubService.getHubByUuid(samlResponseLogEntity.getHubUuid()); Map> userAttributes = Utils .convertStringIntoMap(samlResponseLogEntity.getAuthenticationObject()); @@ -198,9 +210,18 @@ public class AuthenticationService { UserEntity userEntity = userRepository.findByBeneficiaryCodiceFiscaleAndHubId(cf, hub.getId()) .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG))); + userId=userEntity.getId(); //samlResponseLogRepository.delete(samlResponseLogEntity); - - return getJWTTokenBean(userEntity, Boolean.TRUE); + loginReq.setEmail(userEntity.getEmail()); + loginAttemptEntity = prepareLoginAttemptEntity(loginReq, request); + loginAttemptEntity.setUserId(userEntity.getId()); + return getJWTTokenBean(userEntity, Boolean.TRUE); + } catch (Exception e) { + log.info("Authentication login failed for email: {}",e.getMessage()); + loginAttemptEntity.setUserId(userId); + createFailedLoginAttempt(loginAttemptEntity, e.getMessage()); + throw e; + } } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java index 5d3640f9..d0b8a716 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java @@ -103,7 +103,7 @@ public class UserServiceImpl implements UserService { @Override @Transactional(rollbackFor = Exception.class) public JWTToken validateExistingUserToken(HttpServletRequest request, String token) { - return userDao.validateExistingUserToken(token); + return userDao.validateExistingUserToken(request,token); } @Override public UserSamlResponse validateNewUserToken(HttpServletRequest request, String token) { diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationAmendmentRequestController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationAmendmentRequestController.java index 9a75fe23..1934ec5b 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationAmendmentRequestController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationAmendmentRequestController.java @@ -111,11 +111,11 @@ public class ApplicationAmendmentRequestController implements ApplicationAmendme .body(new Response<>(applicationAmendmentBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_DATA_FOR_AMENDMENT_SUCCESS_MSG))); } @Override - public ResponseEntity> updateApplicationAmendmentStatus(HttpServletRequest request, Long applicationId, + public ResponseEntity> updateApplicationAmendmentStatus(HttpServletRequest request, Long applicationAmendmentId, ApplicationAmendmentRequestEnum status) { - ApplicationAmendmentRequestResponse applicationResponse = applicationAmendmentRequestService.updateApplicationStatus(request, applicationId, status); + ApplicationAmendmentRequestResponse applicationResponse = applicationAmendmentRequestService.updateApplicationAmendmentStatus(request, applicationAmendmentId, status); return ResponseEntity.status(HttpStatus.OK) - .body(new Response<>(applicationResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_STATUS_UPDATED_SUCCESSFULLY))); + .body(new Response<>(applicationResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_AMENDMENT_UPDATE_SUCCESSFULLY_MSG))); } @Override public ResponseEntity> sendReminderEmail(