Merge branch 'feature/GEPAFINBE-3' of https://github.com/Kitzanos/GEPAFIN-BE into feature/GEPAFINBE-8

This commit is contained in:
harish
2024-08-22 12:08:18 +05:30
3 changed files with 12 additions and 11 deletions

View File

@@ -5,6 +5,8 @@ import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys; import io.jsonwebtoken.security.Keys;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import net.gepafin.tendermanagement.entities.UserEntity;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -39,7 +41,7 @@ public class TokenProvider {
log.info("JWT Secret Key initialized."); log.info("JWT Secret Key initialized.");
} }
public String createToken(Authentication authentication, Boolean rememberMe) { public String createToken(Authentication authentication, Boolean rememberMe, UserEntity user) {
String authorities = authentication.getAuthorities().stream() String authorities = authentication.getAuthorities().stream()
.map(GrantedAuthority::getAuthority) .map(GrantedAuthority::getAuthority)
.collect(Collectors.joining(",")); .collect(Collectors.joining(","));
@@ -56,8 +58,13 @@ public class TokenProvider {
log.info("Creating token with standard validity of {} seconds.", this.tokenValidityInSeconds); log.info("Creating token with standard validity of {} seconds.", this.tokenValidityInSeconds);
} }
String payload = authentication.getName();
if(user != null) {
payload += ":"+user.getId();
}
String token = Jwts.builder() String token = Jwts.builder()
.setSubject(authentication.getName()) .setSubject(payload)
.claim("auth", authorities) .claim("auth", authorities)
.signWith(key, SignatureAlgorithm.HS512) .signWith(key, SignatureAlgorithm.HS512)
.setExpiration(validity) .setExpiration(validity)

View File

@@ -1,11 +1,9 @@
package net.gepafin.tendermanagement.model.util; package net.gepafin.tendermanagement.model.util;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import net.gepafin.tendermanagement.model.response.LoginResponse; import net.gepafin.tendermanagement.model.response.LoginResponse;
import net.gepafin.tendermanagement.model.response.UserResponseBean;
/** /**
* JWTToken * JWTToken

View File

@@ -19,7 +19,6 @@ import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
@@ -33,9 +32,6 @@ public class AuthenticationService {
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired @Autowired
private RoleDao roleDao; private RoleDao roleDao;
@@ -51,13 +47,13 @@ public class AuthenticationService {
Authentication authentication = this.authenticationManager.authenticate(authenticationToken); Authentication authentication = this.authenticationManager.authenticate(authenticationToken);
SecurityContextHolder.getContext().setAuthentication(authentication); SecurityContextHolder.getContext().setAuthentication(authentication);
log.info("Authentication successful for email: {}", loginReq.getEmail()); log.info("Authentication successful for email: {}", loginReq.getEmail());
String token = tokenProvider.createToken(authentication, loginReq.getRememberMe());
log.info("JWT token generated for email: {}", loginReq.getEmail());
UserEntity user = userRepository.findByEmail(loginReq.getEmail()); UserEntity user = userRepository.findByEmail(loginReq.getEmail());
if (user == null) { if (user == null) {
log.error("User not found for email: {}", loginReq.getEmail()); log.error("User not found for email: {}", loginReq.getEmail());
throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG)); throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG));
} }
String token = tokenProvider.createToken(authentication, loginReq.getRememberMe(), user);
log.info("JWT token generated for email: {}", loginReq.getEmail());
RoleResponseBean roleResponseBean = roleDao.convertRoleEntityToRoleResponse(user.getRoleEntity()); RoleResponseBean roleResponseBean = roleDao.convertRoleEntityToRoleResponse(user.getRoleEntity());
JWTToken jwtToken = new JWTToken(token, new LoginResponse(user.getId(), user.getEmail(), user.getFirstName(), JWTToken jwtToken = new JWTToken(token, new LoginResponse(user.getId(), user.getEmail(), user.getFirstName(),
user.getLastName(), roleResponseBean, user.getPhoneNumber(), user.getAddress(), user.getOrganization(), user.getLastName(), roleResponseBean, user.getPhoneNumber(), user.getAddress(), user.getOrganization(),