From d88c345e63f0b78192c012dd246b5f3094917931 Mon Sep 17 00:00:00 2001 From: sarojsingh2021 <saroj.kumarsingh@tarento.com> Date: Wed, 7 Dec 2022 15:57:24 +0530 Subject: [PATCH] swagger and delete user --- pom.xml | 24 ++++++++++++--- .../java/com/tarento/retail/Application.java | 2 +- .../tarento/retail/config/SwaggerConfig.java | 30 +++++++++++++++++++ .../retail/config/WebSecurityConfig.java | 6 ++++ .../retail/controller/UserController.java | 19 ++++++++++++ .../java/com/tarento/retail/dao/UserDao.java | 2 ++ .../tarento/retail/dao/impl/UserDaoImpl.java | 15 ++++++++++ .../tarento/retail/service/UserService.java | 2 ++ .../retail/service/impl/UserServiceImpl.java | 7 +++-- .../com/tarento/retail/util/PathRoutes.java | 1 + .../java/com/tarento/retail/util/Sql.java | 2 ++ src/main/resources/application.properties | 13 ++++---- 12 files changed, 110 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/tarento/retail/config/SwaggerConfig.java diff --git a/pom.xml b/pom.xml index da8949c..8890006 100644 --- a/pom.xml +++ b/pom.xml @@ -83,7 +83,6 @@ <scope>test</scope> </dependency> - <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-jwt</artifactId> @@ -95,11 +94,11 @@ <artifactId>spring-security-oauth2</artifactId> <version>2.1.0.RELEASE</version> </dependency> - <dependency> + <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> - <version>2.8.6</version> - </dependency> + <version>2.8.6</version> + </dependency> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> @@ -187,6 +186,23 @@ <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> + <dependency> + <groupId>io.springfox</groupId> + <artifactId>springfox-swagger-ui</artifactId> + <version>2.9.2</version> + </dependency> + <dependency> + <groupId>io.springfox</groupId> + <artifactId>springfox-swagger2</artifactId> + <version>2.9.2</version> + </dependency> + <!-- + <dependency> + <groupId>io.springfox</groupId> + <artifactId>springfox-schema</artifactId> + <version>2.9.2</version> + </dependency> --> + </dependencies> <build> <plugins> diff --git a/src/main/java/com/tarento/retail/Application.java b/src/main/java/com/tarento/retail/Application.java index 98797da..3358bee 100644 --- a/src/main/java/com/tarento/retail/Application.java +++ b/src/main/java/com/tarento/retail/Application.java @@ -11,7 +11,6 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter import com.tarento.retail.util.Constants; - @SpringBootApplication public class Application { @@ -34,5 +33,6 @@ public class Application { public TokenStore tokenStore() { return new InMemoryTokenStore(); } + } diff --git a/src/main/java/com/tarento/retail/config/SwaggerConfig.java b/src/main/java/com/tarento/retail/config/SwaggerConfig.java new file mode 100644 index 0000000..2f2346a --- /dev/null +++ b/src/main/java/com/tarento/retail/config/SwaggerConfig.java @@ -0,0 +1,30 @@ +package com.tarento.retail.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import static springfox.documentation.builders.PathSelectors.regex; + +@Configuration +@EnableSwagger2 +public class SwaggerConfig { + + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2).select() + .apis(RequestHandlerSelectors.basePackage("com.tarento.retail")) + .paths(PathSelectors.any()) + .build(); + } + + +} diff --git a/src/main/java/com/tarento/retail/config/WebSecurityConfig.java b/src/main/java/com/tarento/retail/config/WebSecurityConfig.java index 7f06e96..9246b1e 100644 --- a/src/main/java/com/tarento/retail/config/WebSecurityConfig.java +++ b/src/main/java/com/tarento/retail/config/WebSecurityConfig.java @@ -57,6 +57,12 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { "/user/mapActionToRole", "/user/unmapActionToRole", "/user/getUsersByMasterRole", "/user/mapUserMasterRoleCountryOrg", "/user/getMasterRoleByOrgDomain", "/user/domainRole", "/user/getUsersByRole", "/user/addOrgDomainRoles","/user/createBulkInstitute", + "/v2/api-docs", + "/configuration/ui", + "/swagger-resources/**", + "/configuration/security", + "/swagger-ui.html", + "/webjars/**", PathRoutes.USER_ACTIONS_URL + PathRoutes.UserRoutes.REQUEST_OTP, PathRoutes.AuthenticationRoutes.SIGN_IN, PathRoutes.USER_ACTIONS_URL + PathRoutes.UserRoutes.GENERATE_PIN) diff --git a/src/main/java/com/tarento/retail/controller/UserController.java b/src/main/java/com/tarento/retail/controller/UserController.java index f624865..a13298b 100644 --- a/src/main/java/com/tarento/retail/controller/UserController.java +++ b/src/main/java/com/tarento/retail/controller/UserController.java @@ -493,6 +493,25 @@ public class UserController { } return ResponseGenerator.failureResponse("Invalid Token"); } + + // DELETE user + @RequestMapping(value = PathRoutes.UserRoutes.ADMIN_DELETE_USER, method = RequestMethod.POST) + public Object softDeleteUser(@RequestBody UserDto userDto, + @RequestHeader(value = Constants.AUTH_HEADER) String authToken, BindingResult result) + throws JsonProcessingException { + if (result.hasErrors()) { + return ResponseGenerator.failureResponse(HttpStatus.UNPROCESSABLE_ENTITY.toString()); + } + Boolean userTokenAvailable = userService.findUserByToken(authToken); + String username = ""; + + if (userTokenAvailable) { + username = jwtTokenUtil.getUsernameFromToken(authToken); + User user = userService.findOne(username); + return ResponseGenerator.successResponse(userService.softDeleteUser(userDto)); + } + return ResponseGenerator.failureResponse("Invalid Token"); + } // User List based on ROLE and Org Domain @RequestMapping(value = PathRoutes.UserRoutes.GET_USERS_BY_MASTER_ROLE, method = RequestMethod.GET) diff --git a/src/main/java/com/tarento/retail/dao/UserDao.java b/src/main/java/com/tarento/retail/dao/UserDao.java index f8bd10b..ec26bbb 100644 --- a/src/main/java/com/tarento/retail/dao/UserDao.java +++ b/src/main/java/com/tarento/retail/dao/UserDao.java @@ -271,4 +271,6 @@ public interface UserDao { Boolean saveInstituteCourse(InstituteCourses instituteCourses); + Boolean softDeleteUser(UserDto user); + } diff --git a/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java b/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java index 9630270..d9bce4f 100644 --- a/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java +++ b/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java @@ -789,6 +789,17 @@ public class UserDaoImpl implements UserDao { } return Boolean.TRUE; } + + @Override + public Boolean softDeleteUser(UserDto user) { + try { + jdbcTemplate.update(Sql.UserQueries.SOFT_DELETE_USER, new Object[] { user.getId() }); + } catch (Exception ex) { + LOGGER.error("Encounter an exception while deleting the user: " + ex); + return Boolean.FALSE; + } + return Boolean.TRUE; + } @Override public List<UserDto> getUsersByMasterRole(String roleCode, Long orgId) { @@ -909,6 +920,10 @@ public class UserDaoImpl implements UserDao { } paramMap.put(Constants.Parameters.ACTIVE, searchRequest.getActive()); } + // not deleted user + condition = addQueryCondition(builder, condition); + builder.append(UserQueries.TAIL_CONDITIONS_USER_NOT_DELETED); + // roleId if (searchRequest.getRoleId() != null && searchRequest.getRoleId().size() > 0) { condition = addQueryCondition(builder, condition); diff --git a/src/main/java/com/tarento/retail/service/UserService.java b/src/main/java/com/tarento/retail/service/UserService.java index 70a4484..e640b1c 100644 --- a/src/main/java/com/tarento/retail/service/UserService.java +++ b/src/main/java/com/tarento/retail/service/UserService.java @@ -250,4 +250,6 @@ public interface UserService { Boolean saveInstituteCourse(InstituteCourses instituteCourses); + Boolean softDeleteUser(UserDto userDto); + } \ No newline at end of file diff --git a/src/main/java/com/tarento/retail/service/impl/UserServiceImpl.java b/src/main/java/com/tarento/retail/service/impl/UserServiceImpl.java index 735935c..f06e749 100644 --- a/src/main/java/com/tarento/retail/service/impl/UserServiceImpl.java +++ b/src/main/java/com/tarento/retail/service/impl/UserServiceImpl.java @@ -473,6 +473,10 @@ public class UserServiceImpl implements UserDetailsService, UserService { public Boolean deleteUser(UserDto userDto) { return userDao.deleteUser(userDto); } + @Override + public Boolean softDeleteUser(UserDto userDto) { + return userDao.deleteUser(userDto); + } @Override public List<UserDto> getUsersByMasterRole(String roleCode, Long orgId) { @@ -564,8 +568,7 @@ public class UserServiceImpl implements UserDetailsService, UserService { @Override public Boolean validateUserOTP(String username, String otp) { - - return Boolean.TRUE; + return Boolean.TRUE; //remove when commit the code /* try { LoginAuthentication loginAuth = Cache.getUserAuthData(username); diff --git a/src/main/java/com/tarento/retail/util/PathRoutes.java b/src/main/java/com/tarento/retail/util/PathRoutes.java index 5883962..345980c 100644 --- a/src/main/java/com/tarento/retail/util/PathRoutes.java +++ b/src/main/java/com/tarento/retail/util/PathRoutes.java @@ -34,6 +34,7 @@ public interface PathRoutes { final String REMOVE_ROLE_MAPPING = "/role/mapping/delete"; final String DELETE_COUNTRY = "/deleteCountry"; final String DELETE_USER = "/deleteUser"; + final String ADMIN_DELETE_USER = "/admin/deleteUser"; final String GET_USER_LIST_BY_ORG = "/getUserListByOrg"; final String GET_USERS_BY_MASTER_ROLE = "getUsersByMasterRole"; final String MAP_USER_MASTER_ROLE_COUNTRY_ORG = "mapUserMasterRoleCountryOrg"; diff --git a/src/main/java/com/tarento/retail/util/Sql.java b/src/main/java/com/tarento/retail/util/Sql.java index 509979c..75edd8e 100644 --- a/src/main/java/com/tarento/retail/util/Sql.java +++ b/src/main/java/com/tarento/retail/util/Sql.java @@ -130,6 +130,7 @@ public interface Sql { final String TAIL_CONDITIONS_COUNTRY_LIKE = " prof.country LIKE ?"; final String TAIL_CONDITIONS_USER_ACTIVE = " usr.is_active is TRUE "; final String TAIL_CONDITIONS_USER_INACTIVE = " usr.is_active is FALSE "; + final String TAIL_CONDITIONS_USER_NOT_DELETED = " usr.is_deleted is FALSE "; final String TAIL_CONDITIONS_USER_ROLEIN = " usrrole.role_id IN "; final String TAIL_CONDITIONS_COUNTRY_EQUALS = " prof.country = ? "; final String ORDER_BY_USER_ID = " ORDER BY usr.id "; @@ -157,6 +158,7 @@ public interface Sql { final String FETCH_AUTH_TOKEN_REF = "SELECT id FROM user_authentication WHERE auth_token = ? "; final String REMOVE_USER_DEVICE_TOKEN = "DELETE from user_device WHERE user_auth_id IN (SELECT id FROM user_authentication WHERE auth_token =?) "; final String DELETE_USER = "DELETE from user WHERE id=?"; + final String SOFT_DELETE_USER = "UPDATE user SET deleted=1 WHERE id= ?"; final String DELETE_USER_ROLE = "DELETE from user_role where user_id=?"; final String DELETE_COUNTRY_USER = "DELETE from country_user where user_id=?"; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 18eddec..387de5f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,14 +1,10 @@ # SET CONTEXT PATH server.port=8081 -#spring.datasource.driver-class-name=com.mysql.jdbc.Driver -#spring.datasource.url=jdbc:mysql://52.29.100.78:3306/retail_user -#spring.datasource.username=root -#spring.datasource.password=Rain123#$ spring.datasource.driver-class-name=com.mysql.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/retail_user?useSSL=false +spring.datasource.url=jdbc:mysql://52.29.100.78:3306/retail_user spring.datasource.username=root -spring.datasource.password=root +spring.datasource.password=Rain123#$ spring.http.multipart.max-file-size=10MB spring.http.multipart.max-request-size=10MB @@ -33,3 +29,8 @@ mail.smtp.email=idc-eagle@tarento.com ### Expiry Timings ### otp.validity.mins=5 jwt.validity.mins=4320 + +#springdoc.swagger-ui.path=/user-management/swagger/swagger-ui.html +#springdoc.api-docs.path=/user-management/swagger/api-docs +spring.mvc.pathmatch.matching-strategy=ant-path-matcher + -- GitLab