Changeset 335fee0
- Timestamp:
- 01/26/26 12:40:55 (6 months ago)
- Branches:
- main
- Children:
- ecd0016
- Parents:
- 62acea2
- Location:
- finkwave/src/main
- Files:
-
- 1 added
- 1 deleted
- 6 edited
-
java/com/ukim/finki/develop/finkwave/config/AuthProperties.java (added)
-
java/com/ukim/finki/develop/finkwave/config/JwtProperties.java (deleted)
-
java/com/ukim/finki/develop/finkwave/controller/AuthController.java (modified) (6 diffs)
-
java/com/ukim/finki/develop/finkwave/service/AuthService.java (modified) (4 diffs)
-
java/com/ukim/finki/develop/finkwave/service/CustomUserDetailsService.java (modified) (1 diff)
-
java/com/ukim/finki/develop/finkwave/service/JwtService.java (modified) (3 diffs)
-
java/com/ukim/finki/develop/finkwave/service/RefreshTokenService.java (modified) (3 diffs)
-
resources/application-example.properties (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
finkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/AuthController.java
r62acea2 r335fee0 3 3 import java.util.Map; 4 4 5 import com.ukim.finki.develop.finkwave.config.AuthProperties; 5 6 import org.springframework.http.HttpStatus; 6 7 import org.springframework.http.ResponseEntity; … … 28 29 @RequiredArgsConstructor 29 30 public class AuthController { 30 // todo: read from config 31 private final int accessTokenMaxAge = 900; 31 private final AuthProperties authProperties; 32 32 private final AuthService authService; 33 33 … … 40 40 return ResponseEntity.ok(Map.of( 41 41 "user", userResponseDto, 42 "tokenExpiresIn", a ccessTokenMaxAge42 "tokenExpiresIn", authProperties.getAccessTokenMaxAge() 43 43 )); 44 44 } catch (Exception e){ … … 57 57 return ResponseEntity.ok(Map.of( 58 58 "user", userResponseDto, 59 "tokenExpiresIn", a ccessTokenMaxAge59 "tokenExpiresIn", authProperties.getAccessTokenMaxAge() 60 60 ) 61 61 ); … … 77 77 authService.refreshAccessTokenAndAddCookie(httpServletResponse, refreshToken); 78 78 return ResponseEntity.ok(Map.of( 79 "tokenExpiresIn", a ccessTokenMaxAge79 "tokenExpiresIn", authProperties.getAccessTokenMaxAge() 80 80 )); 81 81 } … … 102 102 UserResponseDto userDto = authService.getUserDtoByUsername(username); 103 103 return ResponseEntity.ok(Map.of( 104 "tokenExpiresIn", a ccessTokenMaxAge,104 "tokenExpiresIn", authProperties.getAccessTokenMaxAge(), 105 105 "user", userDto 106 106 )); -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/AuthService.java
r62acea2 r335fee0 1 1 package com.ukim.finki.develop.finkwave.service; 2 2 3 import com.ukim.finki.develop.finkwave.config.AuthProperties; 3 4 import com.ukim.finki.develop.finkwave.dto.LoginRequestDto; 4 5 import org.springframework.security.crypto.password.PasswordEncoder; … … 26 27 private final JwtService jwtService; 27 28 private final RefreshTokenService refreshTokenService; 28 private final int accessTokenMaxAge = 900; 29 private final int refreshTokenMaxAge = 10 * 24 * 60 * 60; 29 private final AuthProperties authProperties; 30 30 31 31 … … 81 81 accessCookie.setSecure(false); 82 82 accessCookie.setPath("/"); 83 accessCookie.setMaxAge(a ccessTokenMaxAge);83 accessCookie.setMaxAge(authProperties.getAccessTokenMaxAge()); 84 84 response.addCookie(accessCookie); 85 85 } … … 127 127 refreshCookie.setSecure(false); 128 128 refreshCookie.setPath("/"); 129 refreshCookie.setMaxAge( refreshTokenMaxAge);129 refreshCookie.setMaxAge(authProperties.getRefreshTokenMaxAge()); 130 130 response.addCookie(refreshCookie); 131 131 -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/CustomUserDetailsService.java
r62acea2 r335fee0 22 22 User user = userRepository.findByUsername(username) 23 23 .orElseThrow(() -> new RuntimeException("user not found")); 24 // List<GrantedAuthority> authorities = List.of(new SimpleGrantedAuthority("ROLE_" + user.getRole().name())); 24 // todo: fix hardcoded role 25 // List<GrantedAuthority> authorities = List.of(new SimpleGrantedAuthority("ROLE_" + user.getRole().name())); 25 26 List<GrantedAuthority> authorities = List.of(new SimpleGrantedAuthority("ROLE_NONADMIN")); 26 27 return new org.springframework.security.core.userdetails.User( -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/JwtService.java
r62acea2 r335fee0 1 1 package com.ukim.finki.develop.finkwave.service; 2 2 3 import com.ukim.finki.develop.finkwave.config.AuthProperties; 3 4 import io.jsonwebtoken.Claims; 4 5 import io.jsonwebtoken.Jwts; 5 6 import io.jsonwebtoken.security.Keys; 7 import lombok.RequiredArgsConstructor; 8 import org.springframework.beans.factory.annotation.Value; 6 9 import org.springframework.stereotype.Service; 7 10 … … 11 14 12 15 @Service 16 @RequiredArgsConstructor 13 17 public class JwtService { 14 // todo: read from config 15 private final int accessTokenMaxAge = 900; // 900s - 15min 16 // todo: replace hardcoded secret 17 private final String secretKey = "very-really-extremely-secret-key-123"; 18 private final AuthProperties authProperties; 18 19 19 20 public String generateToken(String username, String role){ 20 SecretKey key = Keys.hmacShaKeyFor( secretKey.getBytes(StandardCharsets.UTF_8));21 SecretKey key = Keys.hmacShaKeyFor(authProperties.getSecret().getBytes(StandardCharsets.UTF_8)); 21 22 return Jwts.builder() 22 23 .setSubject(username) 23 24 .claim("role", "ROLE_" + role) 24 .setExpiration(new Date(System.currentTimeMillis() + (long) a ccessTokenMaxAge* 1000))25 .setExpiration(new Date(System.currentTimeMillis() + (long) authProperties.getAccessTokenMaxAge() * 1000)) 25 26 .signWith(key) 26 27 .compact(); … … 28 29 29 30 public Claims extractClaims(String token){ 30 SecretKey key = Keys.hmacShaKeyFor( secretKey.getBytes(StandardCharsets.UTF_8));31 SecretKey key = Keys.hmacShaKeyFor(authProperties.getSecret().getBytes(StandardCharsets.UTF_8)); 31 32 return Jwts.parserBuilder() 32 33 .setSigningKey(key) -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/RefreshTokenService.java
r62acea2 r335fee0 1 1 package com.ukim.finki.develop.finkwave.service; 2 2 3 import com.ukim.finki.develop.finkwave.config.AuthProperties; 3 4 import com.ukim.finki.develop.finkwave.model.RefreshToken; 4 5 import com.ukim.finki.develop.finkwave.model.User; … … 16 17 public class RefreshTokenService { 17 18 private final RefreshTokenRepository refreshTokenRepository; 19 private final AuthProperties authProperties; 18 20 19 21 public RefreshToken createRefreshToken(User user){ … … 21 23 refreshToken.setUser(user); 22 24 refreshToken.setToken(UUID.randomUUID().toString()); 23 refreshToken.setExpiresAt(Instant.now().plus( 14, ChronoUnit.DAYS));25 refreshToken.setExpiresAt(Instant.now().plus(authProperties.getRefreshTokenMaxAge(), ChronoUnit.SECONDS)); 24 26 return refreshTokenRepository.save(refreshToken); 25 27 } -
finkwave/src/main/resources/application-example.properties
r62acea2 r335fee0 5 5 spring.datasource.password=x 6 6 spring.datasource.hikari.schema=x 7 8 auth.secret=x 9 10 # 15 minutes 11 auth.access-token-max-age=900 12 13 # 10 days = 10 * 24 * 60 * 60 14 auth.refresh-token-max-age=864000
Note:
See TracChangeset
for help on using the changeset viewer.
