package net.gepafin.tendermanagement.service.impl; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import net.gepafin.tendermanagement.config.SamlSuccessHandler; import net.gepafin.tendermanagement.dao.UserDao; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.model.request.LoginReq; import net.gepafin.tendermanagement.model.request.UpdateUserReq; import net.gepafin.tendermanagement.model.request.UserReq; import net.gepafin.tendermanagement.enums.RoleStatusEnum; import net.gepafin.tendermanagement.enums.UserStatusEnum; import net.gepafin.tendermanagement.model.request.*; import net.gepafin.tendermanagement.model.response.UserSamlResponse; import net.gepafin.tendermanagement.model.response.UserResponseBean; import net.gepafin.tendermanagement.model.util.JWTToken; import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.util.Validator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Autowired private Validator validator; @Autowired private SamlSuccessHandler samlSuccessHandler; @Override @Transactional(rollbackFor = Exception.class) public JWTToken createUser(HttpServletRequest request, String tempToken, UserReq userReq) { if (tempToken == null) { validator.validateRequest(request,RoleStatusEnum.ROLE_SUPER_ADMIN); }else { samlSuccessHandler.validateToken(tempToken, userReq.getCodiceFiscale()); } return userDao.createUser(request, tempToken, userReq); } @Override @Transactional(rollbackFor = Exception.class) public UserResponseBean updateUser(Long userId, UpdateUserReq userReq) { return userDao.updateUser(userId, userReq); } @Override @Transactional(readOnly = true) public UserResponseBean getUserById(Long userId) { return userDao.getUserById(userId); } @Override @Transactional(rollbackFor = Exception.class) public void deleteUser(Long userId) { userDao.deleteUser(userId); } @Override public JWTToken login(LoginReq loginReq) { return userDao.login(loginReq); } @Override public UserEntity validateUser(Long userId) { return userDao.validateUser(userId); } @Override public String initiatePasswordReset(InitiatePasswordResetReq resetReq) { return userDao.initiatePasswordReset(resetReq); } @Override public Boolean resetPassword(ResetPasswordReq resetPasswordReq) { return userDao.resetPassword(resetPasswordReq); } @Override public Boolean changePassword(ChangePasswordRequest request){ return userDao.changePassword(request); } @Override public void logoutUser(HttpServletRequest request, HttpServletResponse response) { userDao.logout(request,response); } @Override @Transactional(rollbackFor = Exception.class) public UserResponseBean updateUserStatus(Long userId, UserStatusEnum statusReq) { return userDao.updateUserStatus(userId, statusReq); } @Override @Transactional(readOnly = true) public UserResponseBean getValidUser(HttpServletRequest request) { UserEntity user=validator.validateUser(request); return userDao.getUserById(user.getId()); } @Override @Transactional(rollbackFor = Exception.class) public JWTToken validateExistingUserToken(HttpServletRequest request, String token) { return userDao.validateExistingUserToken(token); } @Override public UserSamlResponse validateNewUserToken(HttpServletRequest request, String token) { return userDao.validateNewUserToken(token); } }