From 4ef26827e768ca7594632da8696857403ab9a1a3 Mon Sep 17 00:00:00 2001 From: rajesh Date: Fri, 25 Oct 2024 11:10:07 +0530 Subject: [PATCH] validate login attempt --- .../tendermanagement/dao/LoginAttemptDao.java | 5 +++-- .../repositories/LoginAttemptRepository.java | 10 ++++++++++ .../service/LoginAttemptService.java | 2 +- .../service/impl/LoginAttemptServiceImpl.java | 15 +++++++++++++-- .../web/rest/api/LoginAttemptApi.java | 2 +- .../rest/api/impl/LoginAttemptApiController.java | 4 ++-- 6 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/LoginAttemptDao.java b/src/main/java/net/gepafin/tendermanagement/dao/LoginAttemptDao.java index 509d4843..9ff64040 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/LoginAttemptDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/LoginAttemptDao.java @@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.dao; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.LoginAttemptEntity; +import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.model.response.LoginAttemptPageableResponseBean; import net.gepafin.tendermanagement.repositories.LoginAttemptRepository; import net.gepafin.tendermanagement.util.DateTimeUtil; @@ -29,7 +30,7 @@ public class LoginAttemptDao { loginAttemptRepository.save(loginAttemptEntity); } - public LoginAttemptPageableResponseBean> getLoginAttemptsList(Integer pageNo, Integer pageLimit) { + public LoginAttemptPageableResponseBean> getLoginAttemptsList(UserEntity userEntity, Integer pageNo, Integer pageLimit) { if (pageLimit == null || pageLimit <= 0) { pageLimit = GepafinConstant.DEFAULT_PAGE_LIMIT; } @@ -38,7 +39,7 @@ public class LoginAttemptDao { pageNo = GepafinConstant.DEFAULT_PAGE; } - Page page = loginAttemptRepository.findAll(PageRequest.of(pageNo - 1, pageLimit, Sort.by(GepafinConstant.ATTEMPT_DATE).descending())); + Page page = loginAttemptRepository.findByHubId(userEntity.getHub().getId(), PageRequest.of(pageNo - 1, pageLimit, Sort.by(GepafinConstant.ATTEMPT_DATE).descending())); List list = new ArrayList<>(); for (LoginAttemptEntity loginAttemptEntity : page.getContent()) { list.add(loginAttemptEntity); diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/LoginAttemptRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/LoginAttemptRepository.java index 257b8ed8..3135e7cd 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/LoginAttemptRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/LoginAttemptRepository.java @@ -1,9 +1,19 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.LoginAttemptEntity; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository public interface LoginAttemptRepository extends JpaRepository { + + @Query("SELECT la FROM LoginAttemptEntity la LEFT JOIN UserEntity u ON u.email = la.username WHERE u.hub.id = :hubId") + Page findByHubId(@Param("hubId") Long hubId, PageRequest pageRequest); + + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/LoginAttemptService.java b/src/main/java/net/gepafin/tendermanagement/service/LoginAttemptService.java index 3e4ed31a..6c8990e1 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/LoginAttemptService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/LoginAttemptService.java @@ -9,7 +9,7 @@ import java.util.List; public interface LoginAttemptService { - LoginAttemptPageableResponseBean> getLoginAttemptsList(Integer pageNo, Integer pageLimit); + LoginAttemptPageableResponseBean> getLoginAttemptsList(HttpServletRequest request, Integer pageNo, Integer pageLimit); void createLoginAttempt(LoginAttemptReq loginAttemptReq, HttpServletRequest request); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/LoginAttemptServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/LoginAttemptServiceImpl.java index 1519273f..fb645aac 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/LoginAttemptServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/LoginAttemptServiceImpl.java @@ -3,12 +3,15 @@ package net.gepafin.tendermanagement.service.impl; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.dao.LoginAttemptDao; import net.gepafin.tendermanagement.entities.LoginAttemptEntity; +import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.enums.LoginAttemptResultEnum; import net.gepafin.tendermanagement.enums.LoginAttemptTypeEnum; import net.gepafin.tendermanagement.model.request.LoginAttemptReq; import net.gepafin.tendermanagement.model.response.LoginAttemptPageableResponseBean; import net.gepafin.tendermanagement.service.LoginAttemptService; import net.gepafin.tendermanagement.util.Utils; +import net.gepafin.tendermanagement.util.Validator; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,22 +22,30 @@ public class LoginAttemptServiceImpl implements LoginAttemptService { @Autowired LoginAttemptDao loginAttemptDao; + + @Autowired + private Validator validator; @Override - public LoginAttemptPageableResponseBean> getLoginAttemptsList(Integer pageNo, Integer pageLimit) { - return loginAttemptDao.getLoginAttemptsList(pageNo, pageLimit); + public LoginAttemptPageableResponseBean> getLoginAttemptsList(HttpServletRequest request, Integer pageNo, Integer pageLimit) { + return loginAttemptDao.getLoginAttemptsList(validator.validateUser(request), pageNo, pageLimit); } @Override public void createLoginAttempt(LoginAttemptReq loginAttemptReq, HttpServletRequest request) { String ipAddress = Utils.getClientIpAddress(request); String userAgent = request.getHeader("user-agent"); + LoginAttemptEntity loginAttemptEntity = new LoginAttemptEntity(); loginAttemptEntity.setType(LoginAttemptTypeEnum.SWITCH.getValue()); loginAttemptEntity.setIpAddress(ipAddress); loginAttemptEntity.setUserAgent(userAgent); loginAttemptEntity.setUsername(loginAttemptReq.getUserName()); loginAttemptEntity.setResult(LoginAttemptResultEnum.SUCCESS.getValue()); + if(loginAttemptReq.getUserId() != null) { + UserEntity userEntity = validator.validateUserId(request, loginAttemptReq.getUserId()); + loginAttemptEntity.setUserId(userEntity.getId()); + } loginAttemptDao.createLoginAttempt(loginAttemptEntity); } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/LoginAttemptApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/LoginAttemptApi.java index 379a1d05..4a71d545 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/LoginAttemptApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/LoginAttemptApi.java @@ -41,7 +41,7 @@ public interface LoginAttemptApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE)}))}) @GetMapping(value = "/login-attempt", produces = {"application/json"}) @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") - default ResponseEntity>> getLoginAttemptsList( + default ResponseEntity>> getLoginAttemptsList(HttpServletRequest request, @ApiParam(value = "page number") @RequestParam(name = "pageNo", required = false) Integer pageNo, @ApiParam(value = "page limit") @RequestParam(name = "pageLimit", required = false) Integer pageLimit) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LoginAttemptApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LoginAttemptApiController.java index ed3a048b..cfd601b3 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LoginAttemptApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LoginAttemptApiController.java @@ -39,8 +39,8 @@ public class LoginAttemptApiController implements LoginAttemptApi { private UserService userService; @Override - public ResponseEntity>> getLoginAttemptsList(Integer pageNo, Integer pageLimit) { - LoginAttemptPageableResponseBean> response = loginAttemptService.getLoginAttemptsList(pageNo, pageLimit); + public ResponseEntity>> getLoginAttemptsList(HttpServletRequest request, Integer pageNo, Integer pageLimit) { + LoginAttemptPageableResponseBean> response = loginAttemptService.getLoginAttemptsList(request, pageNo, pageLimit); return ResponseEntity.status(HttpStatus.OK).body(response); }