From a3f3ca6b613af18800cf62587a3a21d639a6ca00 Mon Sep 17 00:00:00 2001 From: Yesitha Sathsara <60166952+yesitha@users.noreply.github.com> Date: Wed, 5 Mar 2025 23:10:51 +0530 Subject: [PATCH 1/3] fixed user - student mapping issue --- .../response/dto/UserDetailsResponse.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/resource-management/resource-management-dao/src/main/java/com/itgura/response/dto/UserDetailsResponse.java b/resource-management/resource-management-dao/src/main/java/com/itgura/response/dto/UserDetailsResponse.java index cd46350..61a2641 100644 --- a/resource-management/resource-management-dao/src/main/java/com/itgura/response/dto/UserDetailsResponse.java +++ b/resource-management/resource-management-dao/src/main/java/com/itgura/response/dto/UserDetailsResponse.java @@ -7,7 +7,6 @@ import lombok.NoArgsConstructor; import java.util.UUID; - @Data @AllArgsConstructor @NoArgsConstructor @@ -19,34 +18,49 @@ public class UserDetailsResponse { private UUID userId; @JsonProperty("registration_number") private Integer registration_number; + @JsonProperty("first_name") private String firstName; + @JsonProperty("last_name") private String lastName; + @JsonProperty("email") private String email; + @JsonProperty("mobile_number") private String mobileNumber; + @JsonProperty("examination_year") private Integer examinYear; + @JsonProperty("gender") private String gender; + @JsonProperty("school") private String school; - @JsonProperty("stream_id") - private UUID stream; + @JsonProperty("stream") - private String address; + private String stream; + + @JsonProperty("stream_id") + private UUID streamId; + + @JsonProperty("address_id") private UUID addressId; + @JsonProperty("house_name_or_number") private String houseNameOrNumber; + @JsonProperty("line1") private String line1; + @JsonProperty("line2") private String line2; + @JsonProperty("city") private String city; @JsonProperty("user_roles") private String userRoles; -} \ No newline at end of file +} From 4df87e7a169f8220e4bda840f12cbbaa7b600b45 Mon Sep 17 00:00:00 2001 From: Yesitha Sathsara <60166952+yesitha@users.noreply.github.com> Date: Wed, 5 Mar 2025 23:25:25 +0530 Subject: [PATCH 2/3] fix bug when creating account in auth service , not create user account in resource service --- .../authservice/config/ApplicationConfig.java | 7 + .../controller/AuthenticationController.java | 7 +- .../repository/UserRepository.java | 2 + .../services/AuthenticationService.java | 84 ++++++++++- .../java/com/itgura/dao/impl/UserDaoImpl.java | 31 ++++- .../itgura/repository/StudentRepository.java | 10 +- .../com/itgura/request/UserDetailRequest.java | 32 ++++- .../service/impl/UserDetailsServiceImpl.java | 130 +++++++++++++++--- 8 files changed, 260 insertions(+), 43 deletions(-) diff --git a/auth-service/src/main/java/com/itgura/authservice/config/ApplicationConfig.java b/auth-service/src/main/java/com/itgura/authservice/config/ApplicationConfig.java index 93e54ad..c6cd0d8 100644 --- a/auth-service/src/main/java/com/itgura/authservice/config/ApplicationConfig.java +++ b/auth-service/src/main/java/com/itgura/authservice/config/ApplicationConfig.java @@ -3,6 +3,7 @@ import com.itgura.authservice.repository.UserRepository; import lombok.RequiredArgsConstructor; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; @@ -13,6 +14,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.web.client.RestTemplate; @Configuration @RequiredArgsConstructor @@ -41,4 +43,9 @@ public AuthenticationManager authenticationManager(AuthenticationConfiguration c public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } + + @Bean + @LoadBalanced + public RestTemplate restTemplate() { + return new RestTemplate();} } diff --git a/auth-service/src/main/java/com/itgura/authservice/controller/AuthenticationController.java b/auth-service/src/main/java/com/itgura/authservice/controller/AuthenticationController.java index 4988b48..85b7b91 100644 --- a/auth-service/src/main/java/com/itgura/authservice/controller/AuthenticationController.java +++ b/auth-service/src/main/java/com/itgura/authservice/controller/AuthenticationController.java @@ -26,8 +26,13 @@ public AppResponse register(@RequestBody RegisterRequest try { AuthenticationResponse res = authenticationService.register(registerRequest); return AppResponse.ok(res); + }catch(IllegalArgumentException e ){ + return AppResponse.error(null,"Illegal Arguments","500","500",e.getMessage()); + }catch(ApplicationException e){ + return AppResponse.error(null,"Application Exception","500","500",e.getMessage()); + } catch (Exception e) { - return AppResponse.error(null, "Server Error", "500", "", e.getMessage()); + return AppResponse.error(null, "Server Error", "500", "500", e.getMessage()); } } diff --git a/auth-service/src/main/java/com/itgura/authservice/repository/UserRepository.java b/auth-service/src/main/java/com/itgura/authservice/repository/UserRepository.java index 7b92d34..d85ecc5 100644 --- a/auth-service/src/main/java/com/itgura/authservice/repository/UserRepository.java +++ b/auth-service/src/main/java/com/itgura/authservice/repository/UserRepository.java @@ -17,4 +17,6 @@ public interface UserRepository extends JpaRepository { Optional findByEmail(String email); Optional findByRole(Role role); + + boolean existsByEmail(String email); } diff --git a/auth-service/src/main/java/com/itgura/authservice/services/AuthenticationService.java b/auth-service/src/main/java/com/itgura/authservice/services/AuthenticationService.java index f8cdd80..4fb19c5 100644 --- a/auth-service/src/main/java/com/itgura/authservice/services/AuthenticationService.java +++ b/auth-service/src/main/java/com/itgura/authservice/services/AuthenticationService.java @@ -7,22 +7,30 @@ import com.itgura.authservice.entity.Role; import com.itgura.authservice.entity.User; import com.itgura.authservice.repository.UserRepository; +import com.itgura.dto.AppResponse; import com.itgura.exception.ApplicationException; import com.itgura.exception.ValueNotExistException; import com.itgura.util.UserUtil; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; -import jakarta.validation.Valid; + import lombok.RequiredArgsConstructor; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.RestTemplate; -import java.util.HashMap; -import java.util.Optional; +import java.util.*; @Service @RequiredArgsConstructor @@ -30,13 +38,19 @@ public class AuthenticationService { @Value("${jwt.secretKey}") private String SECRET_KEY; - + @Autowired + private RestTemplate restTemplate; private final UserRepository userRepository; private final PasswordEncoder passwordEncoder; private final JwtService jwtService; private final AuthenticationManager authenticationManager; - public AuthenticationResponse register(RegisterRequest registerRequest) { + + @Transactional(rollbackFor = ApplicationException.class) + public AuthenticationResponse register(RegisterRequest registerRequest) throws IllegalArgumentException, ApplicationException { + if(isExistingUser(registerRequest.getEmail())){ + throw new IllegalArgumentException("The email is already in use in another account, try logging instead"); + } var user = User.builder() .firstName(registerRequest.getFirstName()) .lastName(registerRequest.getLastName()) @@ -45,14 +59,74 @@ public AuthenticationResponse register(RegisterRequest registerRequest) { .role(Role.STUDENT) .build(); userRepository.save(user); + var jwtToken = jwtService.generateToken(user); var refreshToken = jwtService.generateRefresh(new HashMap<>(),user); + try { + createAccountInResourceService(user.getEmail(), user.getFirstName(), user.getLastName(), user.getId(),jwtToken); + } catch (Exception e) { + + throw new ApplicationException("Failed to create account in resource service: " + e.getMessage()); + } return AuthenticationResponse.builder() .authenticationToken(jwtToken) .refreshToken(refreshToken) .build(); } + private void createAccountInResourceService(String email, String firstName, String lastName, UUID id, String jwtToken) throws ApplicationException { + String url = "http://lms-gateway/resource-management/user-details"; + HttpHeaders headers = new HttpHeaders(); + headers.add("Authorization", "Bearer " + jwtToken); + + + // Prepare the request body with only the necessary fields + // Create a map for the request body + Map requestBody = new HashMap<>(); + requestBody.put("registration_number", 0); + requestBody.put("first_name", firstName); + requestBody.put("last_name", lastName); + requestBody.put("user_id", id); + requestBody.put("email", email); + requestBody.put("mobile_number", null); + requestBody.put("examination_year", 0); + requestBody.put("gender", null); + requestBody.put("school", null); + requestBody.put("stream_id", null); + requestBody.put("address", null); + + // Create the HttpEntity with headers and body + HttpEntity> entity = new HttpEntity<>(requestBody, headers); + + try { + ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.POST, entity, AppResponse.class); + AppResponse response = responseEntity.getBody(); + System.out.println(response); + + if (response == null || response.getData() == null) { + throw new ApplicationException("Error while creating account in resource account"); + } + + System.out.println("Account Created Successfully"); + + + + } catch (HttpClientErrorException.Forbidden e) { + throw new ApplicationException("Access is forbidden: " + e.getMessage()); + } catch (HttpClientErrorException e) { + throw new ApplicationException("Client error: " + e.getStatusCode() + " " + e.getMessage()); + } catch (Exception e) { + throw new ApplicationException("Server error: " + e.getMessage()); + } + + + } + + private boolean isExistingUser(String email) { + return userRepository.existsByEmail(email); + + } + public AuthenticationResponse authenticate(AuthenticationRequest authenticationRequest) { authenticationManager.authenticate( new UsernamePasswordAuthenticationToken(authenticationRequest.getEmail(), authenticationRequest.getPassword()) diff --git a/resource-management/resource-management-dao/src/main/java/com/itgura/dao/impl/UserDaoImpl.java b/resource-management/resource-management-dao/src/main/java/com/itgura/dao/impl/UserDaoImpl.java index 53d55c2..07066bb 100644 --- a/resource-management/resource-management-dao/src/main/java/com/itgura/dao/impl/UserDaoImpl.java +++ b/resource-management/resource-management-dao/src/main/java/com/itgura/dao/impl/UserDaoImpl.java @@ -15,22 +15,39 @@ public class UserDaoImpl implements UserDao { @PersistenceContext private EntityManager entityManager; public UserResponseDto getUserDetailByEmail(String email) throws CredentialNotFoundException { - try{ + try { StringBuilder sql = new StringBuilder(); - sql.append("select u.id, u.role, concat(u.first_name,' ',u.last_name) as username from auth_service._user as u where u.email like :email"); - java.util.List resultList ; + sql.append("select u.id, u.role, concat(u.first_name,' ',u.last_name) as username ") + .append("from auth_service._user as u where u.email like :email"); + // Create and configure the query Query nativeQuery = entityManager.createNativeQuery(sql.toString()); - nativeQuery.setParameter("email",email).getResultList(); - resultList = nativeQuery.getResultList(); + nativeQuery.setParameter("email", email); + System.out.println("Executing query: " + sql.toString()); + + // Execute the query and fetch the result list + java.util.List resultList = nativeQuery.getResultList(); + + if (resultList.isEmpty()) { + throw new CredentialNotFoundException("No user found with the provided email"); + } + + // Map the result to the DTO UserResponseDto response = new UserResponseDto(); response.setUserId((UUID) resultList.get(0)[0]); response.setUserRoles((String) resultList.get(0)[1]); response.setName((String) resultList.get(0)[2]); return response; - } catch (Exception e) { - throw new CredentialNotFoundException("User not found"); + + + } catch (Exception ex) { + System.out.println(ex); + throw new RuntimeException("Error occurred while fetching user details", ex); } } + + + + } diff --git a/resource-management/resource-management-dao/src/main/java/com/itgura/repository/StudentRepository.java b/resource-management/resource-management-dao/src/main/java/com/itgura/repository/StudentRepository.java index f111846..8d32a10 100644 --- a/resource-management/resource-management-dao/src/main/java/com/itgura/repository/StudentRepository.java +++ b/resource-management/resource-management-dao/src/main/java/com/itgura/repository/StudentRepository.java @@ -1,12 +1,20 @@ package com.itgura.repository; + + import com.itgura.entity.Student; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.stereotype.Repository; + import java.util.Optional; import java.util.UUID; @Repository @EnableJpaRepositories public interface StudentRepository extends JpaRepository { Optional findByUserId(UUID userId); -} \ No newline at end of file + + + @Query("SELECT MAX(s.registration_number) FROM Student s") + Integer findMaxRegistrationNumber(); +} diff --git a/resource-management/resource-management-dao/src/main/java/com/itgura/request/UserDetailRequest.java b/resource-management/resource-management-dao/src/main/java/com/itgura/request/UserDetailRequest.java index 0dbabd0..6f4b726 100644 --- a/resource-management/resource-management-dao/src/main/java/com/itgura/request/UserDetailRequest.java +++ b/resource-management/resource-management-dao/src/main/java/com/itgura/request/UserDetailRequest.java @@ -1,4 +1,5 @@ package com.itgura.request; + import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.Valid; import jakarta.validation.constraints.Email; @@ -8,42 +9,59 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; + import java.util.UUID; + @Data @AllArgsConstructor @NoArgsConstructor @Builder public class UserDetailRequest { + @NotNull(message = "Registration number is required") @JsonProperty("registration_number") private Integer registrationNumber; + + @NotNull(message = "User Id is required") + @JsonProperty("user_id") + private UUID userID; + @NotBlank(message = "First name is required") @JsonProperty("first_name") private String firstName; + @NotBlank(message = "Last name is required") @JsonProperty("last_name") private String lastName; + @Email(message = "Invalid email format") @NotBlank(message = "Email is required") @JsonProperty("email") private String email; - @NotBlank(message = "Mobile number is required") + + // @NotBlank(message = "Mobile number is required") @JsonProperty("mobile_number") private String mobileNumber; - @NotNull(message = "Examination year is required") + + // @NotNull(message = "Examination year is required") @JsonProperty("examination_year") private Integer examinationYear; - @NotBlank(message = "Gender is required") + + // @NotBlank(message = "Gender is required") @JsonProperty("gender") private String gender; - @NotBlank(message = "School is required") + + // @NotBlank(message = "School is required") @JsonProperty("school") private String school; - @NotNull(message = "Stream ID is required") + + // @NotNull(message = "Stream ID is required") @JsonProperty("stream_id") private UUID stream; + @Valid - @NotNull(message = "Address is required") + // @NotNull(message = "Address is required") @JsonProperty("address") private AddressRequest address; -} \ No newline at end of file + +} diff --git a/resource-management/resource-management-service/src/main/java/com/itgura/service/impl/UserDetailsServiceImpl.java b/resource-management/resource-management-service/src/main/java/com/itgura/service/impl/UserDetailsServiceImpl.java index eae44df..4cce72d 100644 --- a/resource-management/resource-management-service/src/main/java/com/itgura/service/impl/UserDetailsServiceImpl.java +++ b/resource-management/resource-management-service/src/main/java/com/itgura/service/impl/UserDetailsServiceImpl.java @@ -29,6 +29,7 @@ public class UserDetailsServiceImpl implements UserDetailService { private String secretKey; @Autowired private UserDao userDao; + @Autowired private AddressRepository addressRepository; @Autowired @@ -38,6 +39,7 @@ public class UserDetailsServiceImpl implements UserDetailService { @Override public UserResponseDto getLoggedUserDetails(String token) throws BadRequestRuntimeException, CredentialNotFoundException { String userEmail = UserUtil.getUserEmail(token, secretKey); + UserResponseDto userDetailByEmail = userDao.getUserDetailByEmail(userEmail); return userDetailByEmail; } @@ -46,62 +48,141 @@ public UserResponseDto getLoggedUserDetails(String token) throws BadRequestRunti public UserDetailsResponse findUser() { try{ UserResponseDto loggedUserDetails = getLoggedUserDetails(UserUtil.extractToken()); + System.out.println("Extract details from token :"+loggedUserDetails); UUID userId = loggedUserDetails.getUserId(); + System.out.println("Extract details from token :"+loggedUserDetails); Student student = studentRepository.findByUserId(userId) .orElseThrow(() -> { - return new ValueNotFoundException("user not found id: " + userId); - }); + + return new ValueNotFoundException("user not found id: " + userId); + }); UserDetailsResponse dto = UserDetailMapper.INSTANCE.toDto(student); dto.setUserRoles(loggedUserDetails.getUserRoles()); return dto; + }catch (Exception e) { throw new RuntimeException(e); } } + @Override public UserDetailsResponse registerUser(UserDetailRequest userDetailRequest) { try{ - UserResponseDto loggedUserDetails = getLoggedUserDetails(UserUtil.extractToken()); - UUID userId = loggedUserDetails.getUserId(); - Address address = new Address(); - address.setHouseNameOrNumber(userDetailRequest.getAddress().getHouseNameOrNumber()); - address.setLine1(userDetailRequest.getAddress().getLine1()); - address.setLine2(userDetailRequest.getAddress().getLine2()); - address.setCity(userDetailRequest.getAddress().getCity()); - Address savedAddress = addressRepository.save(address); - Stream stream = streamRepository.findById(userDetailRequest.getStream()) - .orElseThrow(() -> { - return new ValueNotFoundException("stream not found id: " + userDetailRequest.getStream()); - }); + Student student = new Student(); - student.setRegistration_number(userDetailRequest.getRegistrationNumber()); student.setFirstName(userDetailRequest.getFirstName()); student.setLastName(userDetailRequest.getLastName()); student.setEmail(userDetailRequest.getEmail()); - student.setMobileNumber(userDetailRequest.getMobileNumber()); + student.setUserId(userDetailRequest.getUserID()); + + if(userDetailRequest.getAddress()!=null) { + Address address = new Address(); + address.setHouseNameOrNumber(userDetailRequest.getAddress().getHouseNameOrNumber()); + address.setLine1(userDetailRequest.getAddress().getLine1()); + address.setLine2(userDetailRequest.getAddress().getLine2()); + address.setCity(userDetailRequest.getAddress().getCity()); + Address savedAddress = addressRepository.save(address); + student.setAddress(savedAddress); + + } + if(userDetailRequest.getStream()!=null) { + + Stream stream = streamRepository.findById(userDetailRequest.getStream()) + .orElseThrow(() -> { + + return new ValueNotFoundException("stream not found id: " + userDetailRequest.getStream()); + }); + student.setStream(stream); + } + if(userDetailRequest.getRegistrationNumber()==0) { + // Fetch the maximum registration number from the database + Integer maxRegistrationNumber = studentRepository.findMaxRegistrationNumber(); + + // Increment the registration number (default to 1 if no records exist) + int newRegistrationNumber = (maxRegistrationNumber != null) ? maxRegistrationNumber + 1 : 1; + + student.setRegistration_number(newRegistrationNumber); + }else { + student.setRegistration_number(userDetailRequest.getRegistrationNumber()); + } + + + if(userDetailRequest.getMobileNumber()!=null) { + student.setMobileNumber(userDetailRequest.getMobileNumber()); + } + student.setExaminYear(userDetailRequest.getExaminationYear()); - student.setGender(userDetailRequest.getGender()); - student.setSchool(userDetailRequest.getSchool()); - student.setAddress(savedAddress); - student.setStream(stream); - student.setUserId(userId); + + if(userDetailRequest.getGender()!=null) { + student.setGender(userDetailRequest.getGender()); + } + if(userDetailRequest.getSchool()!=null) { + student.setSchool(userDetailRequest.getSchool()); + } + + System.out.println(student); + Student save = studentRepository.save(student); UserDetailsResponse dto = UserDetailMapper.INSTANCE.toDto(save); - dto.setUserRoles(loggedUserDetails.getUserRoles()); + dto.setUserRoles("STUDENT"); return dto; + }catch (Exception e) { + System.out.println(e); throw new RuntimeException(e); } } + +// private String generateRegistrationNumber() { +// // Step 1: Fetch the last registration number from the database +// String lastRegistrationNumber = studentRepository.findLastRegistrationNumber(); // Custom query +// +// // Step 2: Define default starting registration number if none exists +// if (lastRegistrationNumber == null || lastRegistrationNumber.isEmpty()) { +// return "AAA1"; // Start with the first registration number +// } +// +// // Step 3: Split the alphabetic and numeric parts +// String alphabetPart = lastRegistrationNumber.replaceAll("\\d", ""); // Extract letters +// String numericPart = lastRegistrationNumber.replaceAll("\\D", ""); // Extract numbers +// +// // Step 4: Increment the numeric part +// int number = Integer.parseInt(numericPart) + 1; +// +// // Step 5: Handle rollover of numeric part +// if (number > 1000) { // Define your maximum threshold +// number = 1; // Reset to 1 +// alphabetPart = incrementAlphabet(alphabetPart); // Increment alphabet part +// } +// +// // Step 6: Format the new registration number +// return alphabetPart + number; +// } +// +// // Helper method to increment the alphabetic part +// private String incrementAlphabet(String alphabetPart) { +// char[] chars = alphabetPart.toCharArray(); +// for (int i = chars.length - 1; i >= 0; i--) { +// if (chars[i] < 'Z') { +// chars[i]++; +// break; +// } else { +// chars[i] = 'A'; // Reset to 'A' if at 'Z' +// } +// } +// return new String(chars); +// } @Override public UserDetailsResponse updateUser(UserDetailRequest userDetailRequest) { try { // Get logged-in user's details UserResponseDto loggedUserDetails = getLoggedUserDetails(UserUtil.extractToken()); UUID userId = loggedUserDetails.getUserId(); + // Find the existing Student record associated with the logged-in user Student student = studentRepository.findByUserId(userId) .orElseThrow(() -> new ValueNotFoundException("User not found with ID: " + userId)); + // Update address if provided Address address = student.getAddress(); if (userDetailRequest.getAddress() != null) { @@ -114,12 +195,14 @@ public UserDetailsResponse updateUser(UserDetailRequest userDetailRequest) { address.setCity(userDetailRequest.getAddress().getCity()); addressRepository.save(address); // Save updated address } + // Update stream if provided if (userDetailRequest.getStream() != null) { Stream stream = streamRepository.findById(userDetailRequest.getStream()) .orElseThrow(() -> new ValueNotFoundException("Stream not found with ID: " + userDetailRequest.getStream())); student.setStream(stream); } + // Update the student's fields with new values from the request student.setRegistration_number(userDetailRequest.getRegistrationNumber()); student.setFirstName(userDetailRequest.getFirstName()); @@ -130,8 +213,10 @@ public UserDetailsResponse updateUser(UserDetailRequest userDetailRequest) { student.setGender(userDetailRequest.getGender()); student.setSchool(userDetailRequest.getSchool()); student.setAddress(address); // Update the associated address + // Save the updated student record Student updatedStudent = studentRepository.save(student); + // Convert updated student entity to response DTO UserDetailsResponse dto = UserDetailMapper.INSTANCE.toDto(updatedStudent); dto.setUserRoles(loggedUserDetails.getUserRoles()); @@ -140,4 +225,5 @@ public UserDetailsResponse updateUser(UserDetailRequest userDetailRequest) { throw new RuntimeException("Failed to update user details", e); } } + } From 921edebaf09581941eb420183e0a26e47b2e6e3e Mon Sep 17 00:00:00 2001 From: Yesitha Sathsara <60166952+yesitha@users.noreply.github.com> Date: Wed, 5 Mar 2025 23:28:44 +0530 Subject: [PATCH 3/3] token expire set to 1 day --- .../main/java/com/itgura/authservice/services/JwtService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auth-service/src/main/java/com/itgura/authservice/services/JwtService.java b/auth-service/src/main/java/com/itgura/authservice/services/JwtService.java index 1373597..2327914 100644 --- a/auth-service/src/main/java/com/itgura/authservice/services/JwtService.java +++ b/auth-service/src/main/java/com/itgura/authservice/services/JwtService.java @@ -56,7 +56,7 @@ public String generateToken( .setSubject(userDetails.getUsername()) .claim("roles", userDetails.getAuthorities()) .setIssuedAt(new Date(System.currentTimeMillis())) - .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 24)) // 1 day + .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24)) // 1 day .signWith(getSignInKey(), SignatureAlgorithm.HS256) .compact(); }