added userId in the token
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
Reference in New Issue
Block a user