Add Logger

This commit is contained in:
harish
2024-08-21 19:54:27 +05:30
parent 7a080504aa
commit 04e9ff57a7
5 changed files with 164 additions and 76 deletions

View File

@@ -36,26 +36,35 @@ public class TokenProvider {
@PostConstruct @PostConstruct
public void init() { public void init() {
this.key = Keys.hmacShaKeyFor(secretKey.getBytes(StandardCharsets.UTF_8)); this.key = Keys.hmacShaKeyFor(secretKey.getBytes(StandardCharsets.UTF_8));
log.info("JWT Secret Key initialized.");
} }
public String createToken(Authentication authentication,Boolean rememberMe) {
public String createToken(Authentication authentication, Boolean rememberMe) {
String authorities = authentication.getAuthorities().stream() String authorities = authentication.getAuthorities().stream()
.map(GrantedAuthority::getAuthority) .map(GrantedAuthority::getAuthority)
.collect(Collectors.joining(",")); .collect(Collectors.joining(","));
Long now = null; Long now;
Date validity=null; Date validity;
if(Boolean.TRUE.equals(rememberMe)) {
now= DateUtils.addMonths(new Date(), 2).getTime(); if (Boolean.TRUE.equals(rememberMe)) {
now = DateUtils.addMonths(new Date(), 2).getTime();
validity = new Date(now); validity = new Date(now);
}else { log.info("Creating token with extended validity for 2 months.");
now=(new Date()).getTime(); } else {
now = (new Date()).getTime();
validity = new Date(now + (this.tokenValidityInSeconds * 1000)); validity = new Date(now + (this.tokenValidityInSeconds * 1000));
log.info("Creating token with standard validity of {} seconds.", this.tokenValidityInSeconds);
} }
return Jwts.builder()
String token = Jwts.builder()
.setSubject(authentication.getName()) .setSubject(authentication.getName())
.claim("auth", authorities) .claim("auth", authorities)
.signWith(key, SignatureAlgorithm.HS512) .signWith(key, SignatureAlgorithm.HS512)
.setExpiration(validity) .setExpiration(validity)
.compact(); .compact();
log.debug("Generated token: {}", token);
return token;
} }
public Authentication getAuthentication(String token) { public Authentication getAuthentication(String token) {
@@ -64,18 +73,21 @@ public class TokenProvider {
.build() .build()
.parseClaimsJws(token) .parseClaimsJws(token)
.getBody(); .getBody();
UserDetails principal = new User(claims.getSubject(), "", Collections.emptyList());
return new UsernamePasswordAuthenticationToken(principal, token, principal.getAuthorities()); UserDetails principal = new User(claims.getSubject(), "", Collections.emptyList());
log.info("Authenticated user: {}", claims.getSubject());
return new UsernamePasswordAuthenticationToken(principal, token, ClaimsToAuthorities(claims.get("auth")));
} }
private Collection<? extends GrantedAuthority> ClaimsToAuthorities(Object authClaim) { private Collection<? extends GrantedAuthority> ClaimsToAuthorities(Object authClaim) {
return authClaim == null || ((String) authClaim).isEmpty() ? Collection<? extends GrantedAuthority> authorities = authClaim == null || ((String) authClaim).isEmpty() ?
Collections.emptyList() : Collections.emptyList() :
Arrays.stream(((String) authClaim).split(",")) Arrays.stream(((String) authClaim).split(","))
.map(SimpleGrantedAuthority::new) .map(SimpleGrantedAuthority::new)
.collect(Collectors.toList()); .collect(Collectors.toList());
log.debug("Converted authorities from claims: {}", authorities);
return authorities;
} }
public boolean validateToken(String authToken) { public boolean validateToken(String authToken) {
@@ -84,9 +96,10 @@ public class TokenProvider {
.setSigningKey(key) .setSigningKey(key)
.build() .build()
.parseClaimsJws(authToken); .parseClaimsJws(authToken);
log.info("Token is valid.");
return true; return true;
} catch (Exception e) { } catch (Exception e) {
log.info("Token validation failed: " + e.getMessage()); log.error("Token validation failed: {}", e.getMessage());
return false; return false;
} }
} }

View File

@@ -3,21 +3,17 @@ package net.gepafin.tendermanagement.dao;
import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.RegionEntity; import net.gepafin.tendermanagement.entities.RegionEntity;
import net.gepafin.tendermanagement.entities.RoleEntity;
import net.gepafin.tendermanagement.model.request.RegionReq; import net.gepafin.tendermanagement.model.request.RegionReq;
import net.gepafin.tendermanagement.model.request.RoleReq;
import net.gepafin.tendermanagement.model.response.RegionResponseBean; import net.gepafin.tendermanagement.model.response.RegionResponseBean;
import net.gepafin.tendermanagement.model.request.UpdateRegionReq;
import net.gepafin.tendermanagement.model.response.RoleResponseBean;
import net.gepafin.tendermanagement.repositories.RegionRepository; import net.gepafin.tendermanagement.repositories.RegionRepository;
import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.util.Utils;
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status; import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -25,14 +21,19 @@ import static net.gepafin.tendermanagement.util.ObjectUtils.setIfUpdated;
@Repository @Repository
public class RegionDao { public class RegionDao {
private final Logger log = LoggerFactory.getLogger(RegionDao.class);
@Autowired @Autowired
private RegionRepository regionRepository; private RegionRepository regionRepository;
public RegionResponseBean createRegion(RegionReq regionReq) { public RegionResponseBean createRegion(RegionReq regionReq) {
log.info("Creating new region with details: {}", regionReq);
RegionEntity regionEntity = convertRegionRequestToRegionEntity(regionReq); RegionEntity regionEntity = convertRegionRequestToRegionEntity(regionReq);
regionRepository.save(regionEntity); regionEntity = regionRepository.save(regionEntity);
log.info("Region created with ID: {}", regionEntity.getId());
return convertRegionEntityToRegionResponse(regionEntity); return convertRegionEntityToRegionResponse(regionEntity);
} }
private RegionEntity convertRegionRequestToRegionEntity(RegionReq regionReq) { private RegionEntity convertRegionRequestToRegionEntity(RegionReq regionReq) {
RegionEntity regionEntity = new RegionEntity(); RegionEntity regionEntity = new RegionEntity();
regionEntity.setCountry(regionReq.getCountry()); regionEntity.setCountry(regionReq.getCountry());
@@ -50,7 +51,8 @@ public class RegionDao {
regionEntity.setEducationLevel(regionReq.getEducationLevel()); regionEntity.setEducationLevel(regionReq.getEducationLevel());
return regionEntity; return regionEntity;
} }
public RegionResponseBean convertRegionEntityToRegionResponse(RegionEntity regionEntity) {
public RegionResponseBean convertRegionEntityToRegionResponse(RegionEntity regionEntity) {
RegionResponseBean regionResponseBean = new RegionResponseBean(); RegionResponseBean regionResponseBean = new RegionResponseBean();
regionResponseBean.setId(regionEntity.getId()); regionResponseBean.setId(regionEntity.getId());
regionResponseBean.setCreatedDate(regionEntity.getCreatedDate()); regionResponseBean.setCreatedDate(regionEntity.getCreatedDate());
@@ -72,7 +74,11 @@ public class RegionDao {
} }
public RegionResponseBean updateRegion(Long id, RegionReq regionReq) { public RegionResponseBean updateRegion(Long id, RegionReq regionReq) {
log.info("Updating region with ID: {}", id);
RegionEntity existingRegion = getRegionById(id); RegionEntity existingRegion = getRegionById(id);
log.info("Current region details: {}", existingRegion);
log.info("New region details: {}", regionReq);
setIfUpdated(existingRegion::getRegionName, existingRegion::setRegionName, regionReq.getRegionName()); setIfUpdated(existingRegion::getRegionName, existingRegion::setRegionName, regionReq.getRegionName());
setIfUpdated(existingRegion::getDescription, existingRegion::setDescription, regionReq.getDescription()); setIfUpdated(existingRegion::getDescription, existingRegion::setDescription, regionReq.getDescription());
setIfUpdated(existingRegion::getCountry, existingRegion::setCountry, regionReq.getCountry()); setIfUpdated(existingRegion::getCountry, existingRegion::setCountry, regionReq.getCountry());
@@ -82,28 +88,40 @@ public class RegionDao {
setIfUpdated(existingRegion::getAreaSize, existingRegion::setAreaSize, regionReq.getAreaSize()); setIfUpdated(existingRegion::getAreaSize, existingRegion::setAreaSize, regionReq.getAreaSize());
setIfUpdated(existingRegion::getGdp, existingRegion::setGdp, regionReq.getGdp()); setIfUpdated(existingRegion::getGdp, existingRegion::setGdp, regionReq.getGdp());
setIfUpdated(existingRegion::getUnemploymentRate, existingRegion::setUnemploymentRate, regionReq.getUnemploymentRate()); setIfUpdated(existingRegion::getUnemploymentRate, existingRegion::setUnemploymentRate, regionReq.getUnemploymentRate());
setIfUpdated(existingRegion::getInfrastructureScore, existingRegion::setInfrastructureScore, regionReq.getInfrastructureScore() ); setIfUpdated(existingRegion::getInfrastructureScore, existingRegion::setInfrastructureScore, regionReq.getInfrastructureScore());
setIfUpdated(existingRegion::getEducationLevel, existingRegion::setEducationLevel, regionReq.getEducationLevel()); setIfUpdated(existingRegion::getEducationLevel, existingRegion::setEducationLevel, regionReq.getEducationLevel());
setIfUpdated(existingRegion::getHealthcareAccess, existingRegion::setHealthcareAccess, regionReq.getHealthcareAccess()); setIfUpdated(existingRegion::getHealthcareAccess, existingRegion::setHealthcareAccess, regionReq.getHealthcareAccess());
setIfUpdated(existingRegion::getEnvironmentalScore, existingRegion::setEnvironmentalScore, regionReq.getEnvironmentalScore()); setIfUpdated(existingRegion::getEnvironmentalScore, existingRegion::setEnvironmentalScore, regionReq.getEnvironmentalScore());
regionRepository.save(existingRegion);
existingRegion = regionRepository.save(existingRegion);
log.info("Region updated with ID: {}", existingRegion.getId());
return Utils.convertObject(existingRegion, RegionResponseBean.class); return Utils.convertObject(existingRegion, RegionResponseBean.class);
} }
public RegionEntity getRegionById(Long id) {
return regionRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG)));
}
public void deleteById(Long id) {
public RegionEntity getRegionById(Long id) {
log.info("Fetching region with ID: {}", id);
RegionEntity regionEntity = regionRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG)));
log.info("Region found: {}", regionEntity);
return regionEntity;
}
public void deleteById(Long id) {
log.info("Deleting region with ID: {}", id);
regionRepository.findById(id) regionRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG))); .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG)));
regionRepository.deleteById(id); regionRepository.deleteById(id);
log.info("Region deleted with ID: {}", id);
} }
public List<RegionResponseBean> getAllRegions()
{ public List<RegionResponseBean> getAllRegions() {
return regionRepository.findAll() log.info("Fetching all regions");
List<RegionResponseBean> regions = regionRepository.findAll()
.stream() .stream()
.map(regionEntity -> Utils.convertObject(regionEntity, RegionResponseBean.class)) .map(regionEntity -> Utils.convertObject(regionEntity, RegionResponseBean.class))
.collect(Collectors.toList()); .collect(Collectors.toList());
log.info("Total regions found: {}", regions.size());
return regions;
} }
} }

View File

@@ -11,6 +11,8 @@ import net.gepafin.tendermanagement.service.RegionService;
import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.util.Utils;
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status; import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -21,6 +23,7 @@ import static net.gepafin.tendermanagement.util.ObjectUtils.setIfUpdated;
@Component @Component
public class RoleDao { public class RoleDao {
private final Logger log = LoggerFactory.getLogger(RoleDao.class);
@Autowired @Autowired
private RoleRepository roleRepository; private RoleRepository roleRepository;
@@ -32,55 +35,76 @@ public class RoleDao {
private RegionDao regionDao; private RegionDao regionDao;
public RoleResponseBean createRole(RoleReq roleReq) { public RoleResponseBean createRole(RoleReq roleReq) {
log.info("Creating new role with details: {}", roleReq);
RoleEntity roleEntity = convertRoleRequestToRoleEntity(roleReq); RoleEntity roleEntity = convertRoleRequestToRoleEntity(roleReq);
roleEntity = roleRepository.save(roleEntity); roleEntity = roleRepository.save(roleEntity);
log.info("Role created with ID: {}", roleEntity.getId());
return convertRoleEntityToRoleResponse(roleEntity); return convertRoleEntityToRoleResponse(roleEntity);
} }
private RoleEntity convertRoleRequestToRoleEntity(RoleReq roleReq) { private RoleEntity convertRoleRequestToRoleEntity(RoleReq roleReq) {
RoleEntity roleEntity = new RoleEntity(); RoleEntity roleEntity = new RoleEntity();
roleEntity.setRoleName(roleReq.getRoleName()); roleEntity.setRoleName(roleReq.getRoleName());
roleEntity.setPermissions(roleReq.getPermissions()); roleEntity.setPermissions(roleReq.getPermissions());
roleEntity.setDescription(roleEntity.getDescription()); roleEntity.setDescription(roleReq.getDescription());
roleEntity.setRegion(regionService.getRegionById(roleReq.getRegionId())); roleEntity.setRegion(regionService.getRegionById(roleReq.getRegionId()));
return roleEntity; return roleEntity;
} }
public RoleResponseBean convertRoleEntityToRoleResponse(RoleEntity roleEntity) { public RoleResponseBean convertRoleEntityToRoleResponse(RoleEntity roleEntity) {
RoleResponseBean roleResponseBean=new RoleResponseBean(); RoleResponseBean roleResponseBean = new RoleResponseBean();
roleResponseBean.setId(roleEntity.getId()); roleResponseBean.setId(roleEntity.getId());
roleResponseBean.setCreatedDate(roleEntity.getCreatedDate()); roleResponseBean.setCreatedDate(roleEntity.getCreatedDate());
roleResponseBean.setUpdatedDate(roleEntity.getUpdatedDate()); roleResponseBean.setUpdatedDate(roleEntity.getUpdatedDate());
roleResponseBean.setRoleName(roleEntity.getRoleName()); roleResponseBean.setRoleName(roleEntity.getRoleName());
roleResponseBean.setDescription(roleEntity.getDescription()); roleResponseBean.setDescription(roleEntity.getDescription());
roleResponseBean.setPermissions(roleEntity.getPermissions()); roleResponseBean.setPermissions(roleEntity.getPermissions());
RegionResponseBean regionResponseBean = regionDao.convertRegionEntityToRegionResponse(roleEntity.getRegion()); RegionResponseBean regionResponseBean = regionDao.convertRegionEntityToRegionResponse(roleEntity.getRegion());
roleResponseBean.setRegion(regionResponseBean); roleResponseBean.setRegion(regionResponseBean);
return roleResponseBean; return roleResponseBean;
} }
public RoleResponseBean updateRole(Long id, RoleReq roleReq) {
RoleEntity existingUserRole = getRoleById(id); public RoleResponseBean updateRole(Long id, RoleReq roleReq) {
setIfUpdated(existingUserRole::getRoleName, existingUserRole::setRoleName, roleReq.getRoleName()); log.info("Updating role with ID: {}", id);
setIfUpdated(existingUserRole::getDescription, existingUserRole::setDescription, roleReq.getDescription()); RoleEntity existingRole = getRoleById(id);
setIfUpdated(existingUserRole::getPermissions, existingUserRole::setPermissions, roleReq.getPermissions());
roleRepository.save(existingUserRole); // Log changes before update
return Utils.convertObject(existingUserRole, RoleResponseBean.class); log.info("Current role details: {}", existingRole);
log.info("New role details: {}", roleReq);
setIfUpdated(existingRole::getRoleName, existingRole::setRoleName, roleReq.getRoleName());
setIfUpdated(existingRole::getDescription, existingRole::setDescription, roleReq.getDescription());
setIfUpdated(existingRole::getPermissions, existingRole::setPermissions, roleReq.getPermissions());
existingRole = roleRepository.save(existingRole);
log.info("Role updated with ID: {}", existingRole.getId());
return Utils.convertObject(existingRole, RoleResponseBean.class);
} }
public RoleEntity getRoleById(Long id) { public RoleEntity getRoleById(Long id) {
return roleRepository.findById(id) log.info("Fetching role with ID: {}", id);
RoleEntity roleEntity = roleRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.ROLE_NOT_FOUND))); .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.ROLE_NOT_FOUND)));
log.info("Role found: {}", roleEntity);
return roleEntity;
} }
public void deleteById(Long id) { public void deleteById(Long id) {
log.info("Deleting role with ID: {}", id);
roleRepository.findById(id) roleRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,Translator.toLocale(GepafinConstant.ROLE_NOT_FOUND))); .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.ROLE_NOT_FOUND)));
roleRepository.deleteById(id); roleRepository.deleteById(id);
log.info("Role deleted with ID: {}", id);
} }
public List<RoleResponseBean> getAllRoles() { public List<RoleResponseBean> getAllRoles() {
return roleRepository.findAll() log.info("Fetching all roles");
List<RoleResponseBean> roles = roleRepository.findAll()
.stream() .stream()
.map(roleEntity -> Utils.convertObject(roleEntity, RoleResponseBean.class)) .map(roleEntity -> Utils.convertObject(roleEntity, RoleResponseBean.class))
.collect(Collectors.toList()); .collect(Collectors.toList());
log.info("Total roles found: {}", roles.size());
return roles;
} }
} }

View File

@@ -18,18 +18,25 @@ import net.gepafin.tendermanagement.service.impl.AuthenticationService;
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status; import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import static net.gepafin.tendermanagement.util.ObjectUtils.setIfUpdated; import static net.gepafin.tendermanagement.util.ObjectUtils.setIfUpdated;
@Repository @Repository
public class UserDao { public class UserDao {
private final Logger log = LoggerFactory.getLogger(UserDao.class);
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@Autowired @Autowired
private AuthenticationService authService; private AuthenticationService authService;
@Autowired @Autowired
private RoleService roleService; private RoleService roleService;
@@ -40,23 +47,32 @@ public class UserDao {
private RoleDao roleDao; private RoleDao roleDao;
public UserResponseBean createUser(UserReq userReq) { public UserResponseBean createUser(UserReq userReq) {
log.info("Creating user with email: {}", userReq.getEmail());
if (userRepository.existsByEmail(userReq.getEmail())) { if (userRepository.existsByEmail(userReq.getEmail())) {
log.error("User creation failed: Email {} already exists", userReq.getEmail());
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.EMAIL_ALREADY_EXISTS)); throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.EMAIL_ALREADY_EXISTS));
} }
if (!userReq.getPassword().equals(userReq.getConfPassword())) { if (!userReq.getPassword().equals(userReq.getConfPassword())) {
log.error("User creation failed: Passwords do not match for email {}", userReq.getEmail());
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.PASSWORD_DOESNT_MATCH)); throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.PASSWORD_DOESNT_MATCH));
} }
if (userReq.getPassword().length() < 8) { if (userReq.getPassword().length() < 8) {
log.error("User creation failed: Password length is less than 8 characters for email {}", userReq.getEmail());
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.PASSWORD_MIN_LEN)); throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.PASSWORD_MIN_LEN));
} }
UserEntity userEntity = convertUserRequestToUserEntity(userReq); UserEntity userEntity = convertUserRequestToUserEntity(userReq);
userEntity = userRepository.save(userEntity); userEntity = userRepository.save(userEntity);
log.info("User created with ID: {}", userEntity.getId());
return convertUserEntityToUserResponse(userEntity); return convertUserEntityToUserResponse(userEntity);
} }
public UserResponseBean updateUser(Long userId, UpdateUserReq userReq) { public UserResponseBean updateUser(Long userId, UpdateUserReq userReq) {
log.info("Updating user with ID: {}", userId);
UserEntity userEntity = userRepository.findById(userId) UserEntity userEntity = userRepository.findById(userId)
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG))); .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG)));
log.info("Current user details: {}", userEntity);
log.info("New user details: {}", userReq);
setIfUpdated(userEntity::getStatus, userEntity::setStatus, userReq.getStatus()); setIfUpdated(userEntity::getStatus, userEntity::setStatus, userReq.getStatus());
setIfUpdated(userEntity::getFirstName, userEntity::setFirstName, userReq.getFirstName()); setIfUpdated(userEntity::getFirstName, userEntity::setFirstName, userReq.getFirstName());
setIfUpdated(userEntity::getLastName, userEntity::setLastName, userReq.getLastName()); setIfUpdated(userEntity::getLastName, userEntity::setLastName, userReq.getLastName());
@@ -68,6 +84,7 @@ public class UserDao {
setIfUpdated(userEntity::getRoleEntity, userEntity::setRoleEntity, roleEntity); setIfUpdated(userEntity::getRoleEntity, userEntity::setRoleEntity, roleEntity);
} }
userEntity = userRepository.save(userEntity); userEntity = userRepository.save(userEntity);
log.info("User updated with ID: {}", userEntity.getId());
return convertUserEntityToUserResponse(userEntity); return convertUserEntityToUserResponse(userEntity);
} }
@@ -90,7 +107,6 @@ public class UserDao {
userResponseBean.setId(userEntity.getId()); userResponseBean.setId(userEntity.getId());
userResponseBean.setCreatedDate(userEntity.getCreatedDate()); userResponseBean.setCreatedDate(userEntity.getCreatedDate());
userResponseBean.setUpdatedDate(userEntity.getUpdatedDate()); userResponseBean.setUpdatedDate(userEntity.getUpdatedDate());
userResponseBean.setId(userEntity.getId());
userResponseBean.setEmail(userEntity.getEmail()); userResponseBean.setEmail(userEntity.getEmail());
userResponseBean.setFirstName(userEntity.getFirstName()); userResponseBean.setFirstName(userEntity.getFirstName());
userResponseBean.setLastName(userEntity.getLastName()); userResponseBean.setLastName(userEntity.getLastName());
@@ -107,19 +123,25 @@ public class UserDao {
} }
public UserResponseBean getUserById(Long id) { public UserResponseBean getUserById(Long id) {
log.info("Fetching user with ID: {}", id);
UserEntity userEntity = userRepository.findById(id) UserEntity userEntity = userRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG))); .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG)));
log.info("User found: {}", userEntity);
return convertUserEntityToUserResponse(userEntity); return convertUserEntityToUserResponse(userEntity);
} }
public void deleteUser(Long id) { public void deleteUser(Long id) {
log.info("Deleting user with ID: {}", id);
userRepository.findById(id) userRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG))); .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG)));
userRepository.deleteById(id); userRepository.deleteById(id);
log.info("User deleted with ID: {}", id);
} }
public JWTToken login(LoginReq loginReq) { public JWTToken login(LoginReq loginReq) {
return authService.login(loginReq); log.info("User login attempt for email: {}", loginReq.getEmail());
JWTToken jwtToken = authService.login(loginReq);
log.info("Login successful for email: {}", loginReq.getEmail());
return jwtToken;
} }
} }

View File

@@ -12,6 +12,8 @@ import net.gepafin.tendermanagement.model.util.JWTToken;
import net.gepafin.tendermanagement.repositories.UserRepository; import net.gepafin.tendermanagement.repositories.UserRepository;
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status; import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -20,18 +22,20 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collections;
@Service @Service
public class AuthenticationService { public class AuthenticationService {
private final Logger log = LoggerFactory.getLogger(AuthenticationService.class);
private final TokenProvider tokenProvider; private final TokenProvider tokenProvider;
private final AuthenticationManager authenticationManager; private final AuthenticationManager authenticationManager;
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@Autowired @Autowired
private PasswordEncoder passwordEncoder; private PasswordEncoder passwordEncoder;
@Autowired @Autowired
private RoleDao roleDao; private RoleDao roleDao;
@@ -42,19 +46,26 @@ public class AuthenticationService {
} }
public JWTToken login(LoginReq loginReq) { public JWTToken login(LoginReq loginReq) {
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginReq.getEmail(),loginReq.getPassword()); log.info("Attempting login for email: {}", loginReq.getEmail());
Authentication authentication = this.authenticationManager.authenticate(authenticationToken); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginReq.getEmail(), loginReq.getPassword());
SecurityContextHolder.getContext().setAuthentication(authentication); Authentication authentication = this.authenticationManager.authenticate(authenticationToken);
String token = tokenProvider.createToken(authentication,loginReq.getRememberMe()); SecurityContextHolder.getContext().setAuthentication(authentication);
UserEntity user = userRepository.findByEmail(loginReq.getEmail()); log.info("Authentication successful for email: {}", loginReq.getEmail());
if (user == null) { String token = tokenProvider.createToken(authentication, loginReq.getRememberMe());
throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG)); log.info("JWT token generated for email: {}", loginReq.getEmail());
} UserEntity user = userRepository.findByEmail(loginReq.getEmail());
RoleResponseBean roleResponseBean = roleDao.convertRoleEntityToRoleResponse(user.getRoleEntity()); if (user == null) {
return new JWTToken(token, new LoginResponse(user.getId(),user.getEmail(), log.error("User not found for email: {}", loginReq.getEmail());
user.getFirstName(),user.getLastName(),roleResponseBean, user.getPhoneNumber(), user.getAddress(), user.getOrganization(), user.getCountry(),user.getStatus() throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG));
,user.getCity(),user.getLastLogin(),user.getCreatedDate(),user.getUpdatedDate())); }
} RoleResponseBean roleResponseBean = roleDao.convertRoleEntityToRoleResponse(user.getRoleEntity());
} JWTToken jwtToken = new JWTToken(token, new LoginResponse(user.getId(), user.getEmail(), user.getFirstName(),
user.getLastName(), roleResponseBean, user.getPhoneNumber(), user.getAddress(), user.getOrganization(),
user.getCountry(), user.getStatus(), user.getCity(), user.getLastLogin(), user.getCreatedDate(),
user.getUpdatedDate()));
log.info("Login successful for email: {}", loginReq.getEmail());
return jwtToken;
}
}