Added action logs for user api's.

This commit is contained in:
piyushkag
2024-11-22 09:05:21 +05:30
parent 531738f82f
commit dd148c0ebf
18 changed files with 404 additions and 73 deletions

View File

@@ -76,7 +76,7 @@ public class CallApiController implements CallApi {
.body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_UPDATE_SUCCESSFULLY_MSG)));
}
@Override
@Transactional(readOnly = true)
@Transactional
public ResponseEntity<Response<CallResponse>> getCallById(HttpServletRequest request, Long callId,Long companyId) {
/** This code is responsible for creating user action logs for the "get Call by id" operation. **/

View File

@@ -4,7 +4,11 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.config.jwt.TokenProvider;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.UserActionEntity;
import net.gepafin.tendermanagement.enums.UserActionContextEnum;
import net.gepafin.tendermanagement.enums.UserActionLogsEnum;
import net.gepafin.tendermanagement.enums.UserStatusEnum;
import net.gepafin.tendermanagement.model.request.*;
import net.gepafin.tendermanagement.model.response.UserSamlResponse;
@@ -12,6 +16,7 @@ import net.gepafin.tendermanagement.model.response.UserResponseBean;
import net.gepafin.tendermanagement.model.util.JWTToken;
import net.gepafin.tendermanagement.model.util.Response;
import net.gepafin.tendermanagement.service.UserService;
import net.gepafin.tendermanagement.util.LoggingUtil;
import net.gepafin.tendermanagement.web.rest.api.UserApi;
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.slf4j.Logger;
@@ -35,12 +40,27 @@ public class UserApiController implements UserApi {
@Autowired
private UserService userService;
@Autowired
private LoggingUtil loggingUtil;
@Autowired
private TokenProvider tokenProvider;
@Override
public ResponseEntity<Response<JWTToken>> createUser(HttpServletRequest request, String tempToken, @RequestBody UserReq userReq) {
log.info("Create User with - Request Body: {}", userReq);
/** This code is responsible for creating user action logs for the "Create User" operation, even tempToken and userToken is present or not**/
UserActionEntity userAction = loggingUtil.logUserActionWithoutToken(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.INSERT).actionContext(UserActionContextEnum.CREATE_USER).build());
JWTToken createdUser = userService.createUser(request, tempToken, userReq);
return ResponseEntity.status(HttpStatus.CREATED)
.body(new Response<>(createdUser, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_CREATED_SUCCESS_MSG)));
/** This code is responsible for updating the user action log with new data after token generation.**/
if (userAction != null) {
loggingUtil.updateUserActionWithTokenDetails(userAction.getId(), createdUser.getToken(), null );
}
return ResponseEntity.status(HttpStatus.CREATED).body(new Response<>(createdUser, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_CREATED_SUCCESS_MSG)));
}
@Override
@@ -48,34 +68,58 @@ public class UserApiController implements UserApi {
@PathVariable("userId") Long userId,
@Valid @RequestBody UpdateUserReq userReq) {
log.info("Update User - User ID: {}, Request Body: {}", userId, userReq);
/** This code is responsible for "Updating user details" operation. **/
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE)
.actionContext(UserActionContextEnum.UPDATE_USER_DETAILS).build());
UserResponseBean updatedUser = userService.updateUser(request, userId, userReq);
return ResponseEntity.status(HttpStatus.OK)
.body(new Response<>(updatedUser, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_UPDATED_SUCCESS_MSG)));
}
@Override
public ResponseEntity<Response<UserResponseBean>> getUserById(HttpServletRequest request,
@PathVariable("userId") Long userId) {
public ResponseEntity<Response<UserResponseBean>> getUserById(HttpServletRequest request, @PathVariable("userId") Long userId) {
log.info("Get User by ID - User ID: {}", userId);
/** This code is responsible for creating user action logs for the "Get user" operation. **/
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_USER).build());
UserResponseBean user = userService.getUserById(request, userId);
return ResponseEntity.status(HttpStatus.OK)
.body(new Response<>(user, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_USER_SUCCESS_MSG)));
return ResponseEntity.status(HttpStatus.OK).body(new Response<>(user, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_USER_SUCCESS_MSG)));
}
@Override
public ResponseEntity<Response<Void>> deleteUser(HttpServletRequest request,
@PathVariable("userId") Long userId) {
public ResponseEntity<Response<Void>> deleteUser(HttpServletRequest request, @PathVariable("userId") Long userId) {
log.info("Delete User - User ID: {}", userId);
/** This code is responsible for creating user action logs for the "Delete user" operation. **/
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.DELETE).actionContext(UserActionContextEnum.DELETE_USER).build());
userService.deleteUser(request, userId);
return ResponseEntity.status(HttpStatus.OK)
.body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_DELETED_SUCCESS_MSG)));
return ResponseEntity.status(HttpStatus.OK).body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_DELETED_SUCCESS_MSG)));
}
@Override
public ResponseEntity<Response<JWTToken>> login(HttpServletRequest request,
@Valid @RequestBody LoginReq loginReq) {
public ResponseEntity<Response<JWTToken>> login(HttpServletRequest request, @Valid @RequestBody LoginReq loginReq) {
log.info("User login attempt ");
JWTToken jwtToken = userService.login(loginReq,request);
/** This code is responsible for creating user action logs for the "LOGIN" operation. **/
UserActionEntity userAction = loggingUtil.logUserActionWithoutToken(
UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.INSERT).actionContext(UserActionContextEnum.USER_LOGIN).build());
JWTToken jwtToken = userService.login(loginReq, request);
/** This code is responsible for updating the action and version log with new data after token generation.**/
if (userAction != null) {
loggingUtil.updateUserActionWithTokenDetails(userAction.getId(), jwtToken.getToken(), null);
loggingUtil.updateVersionHistoriesWithTokenDetails(userAction.getId(), jwtToken.getToken());
}
return ResponseEntity.ok(new Response<>(jwtToken, Status.SUCCESS, Translator.toLocale(GepafinConstant.LOGIN_SUCCESS_MSG)));
}
@Override
@@ -106,6 +150,10 @@ public class UserApiController implements UserApi {
@Override
public ResponseEntity<Response<Void>> logoutUser(HttpServletRequest request, HttpServletResponse response) {
/** This code is responsible for creating user action logs for the "Logout" operation. **/
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.LOGOUT).actionContext(UserActionContextEnum.LOGOUT_USER).build());
userService.logoutUser(request, response);
log.info("User has successfully logged");
@@ -123,24 +171,50 @@ public class UserApiController implements UserApi {
public ResponseEntity<Response<UserResponseBean>> getValidUser(HttpServletRequest request) {
log.info("Get Valid User Detail");
UserResponseBean user = userService.getValidUser(request);
/** This code is responsible for creating user action logs for the "Get valid user details." operation. **/
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_VALID_USER_DETAILS).build());
return ResponseEntity.status(HttpStatus.OK)
.body(new Response<>(user, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_USER_SUCCESS_MSG)));
}
@Override
public ResponseEntity<Response<JWTToken>> validateExistingUserToken(HttpServletRequest request, String token) {
log.info("User login attempt via spid token");
JWTToken data = userService.validateExistingUserToken(request, token);
return ResponseEntity.ok(new Response<>(data, Status.SUCCESS, Translator.toLocale(GepafinConstant.TOKEN_VALIDATE_SUCCESS_MSE)));
log.info("User login attempt via spid token");
/** This code is responsible for creating user action logs for the "Validating existing user from spid token" operation. **/
UserActionEntity userAction = loggingUtil.logUserActionWithoutToken(
UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.VALIDATE_EXISTING_USER_WITH_SPID_TOKEN)
.build());
JWTToken data = userService.validateExistingUserToken(request, token);
/** This code is responsible for updating the action and version log with new data.**/
if (userAction != null) {
loggingUtil.updateUserActionWithTokenDetails(userAction.getId(), data.getToken(), data);
loggingUtil.updateVersionHistoriesWithTokenDetails(userAction.getId(), data.getToken());
}
return ResponseEntity.ok(new Response<>(data, Status.SUCCESS, Translator.toLocale(GepafinConstant.TOKEN_VALIDATE_SUCCESS_MSG)));
}
@Override
public ResponseEntity<Response<UserSamlResponse>> validateNewUserToken(HttpServletRequest request, String token) {
log.info("User validating spid token");
UserSamlResponse data = userService.validateNewUserToken(request,token);
return ResponseEntity.ok(new Response<>(data, Status.SUCCESS, Translator.toLocale(GepafinConstant.TOKEN_VALIDATE_SUCCESS_MSE)));
log.info("User validating spid token");
/** This code is responsible for creating user action logs for the "Validating new user from spid token" operation. **/
loggingUtil.logUserActionWithoutToken(
UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.VALIDATE_NEW_USER_WITH_SPID_TOKEN).build());
UserSamlResponse data = userService.validateNewUserToken(request, token);
return ResponseEntity.ok(new Response<>(data, Status.SUCCESS, Translator.toLocale(GepafinConstant.TOKEN_VALIDATE_SUCCESS_MSG)));
}
@Override
public ResponseEntity<Response<List<UserResponseBean>>> getAllUsers(HttpServletRequest request,
Long roleId) {