hr guest
This commit is contained in:
@@ -54,6 +54,12 @@ public class AuthController {
|
||||
});
|
||||
}
|
||||
|
||||
@PostMapping("/hr-guest-token")
|
||||
public Mono<ResponseEntity<RagResponse<UserProfileDTO>>> hrGuestToken() {
|
||||
return authService.hrGuestToken()
|
||||
.map(ResponseEntity::ok);
|
||||
}
|
||||
|
||||
private void addAuthCookie(ServerHttpResponse response, String token) {
|
||||
ResponseCookie cookie = ResponseCookie.from("Authorization", token)
|
||||
.httpOnly(true)
|
||||
|
||||
@@ -46,12 +46,12 @@ public class JwtTokenProvider {
|
||||
claims.put(USER_REGISTRATION_STATUS, user.getRegistrationStatus().name());
|
||||
claims.put(SESSION_ID, sessionId);
|
||||
claims.put(LAST_UPDATE, LocalDateTime.now().toString());
|
||||
return createToken(claims, user.getEmail());
|
||||
return createToken(claims, user.getEmail(), jwtValidityInMilliseconds);
|
||||
}
|
||||
|
||||
public String refreshToken(String token) {
|
||||
Claims claims = getAllClaimsFromToken(token);
|
||||
return createToken(claims, claims.getSubject());
|
||||
return createToken(claims, claims.getSubject(), jwtValidityInMilliseconds);
|
||||
}
|
||||
|
||||
public boolean validateToken(String token) {
|
||||
@@ -99,13 +99,26 @@ public class JwtTokenProvider {
|
||||
}
|
||||
}
|
||||
|
||||
private String createToken(Map<String, Object> claims, String subject) {
|
||||
private String createToken(Map<String, Object> claims, String subject, long validityMs) {
|
||||
return Jwts.builder()
|
||||
.claims(claims)
|
||||
.subject(subject)
|
||||
.issuedAt(new Date())
|
||||
.expiration(new Date(System.currentTimeMillis() + jwtValidityInMilliseconds))
|
||||
.expiration(new Date(System.currentTimeMillis() + validityMs))
|
||||
.signWith(secretKey)
|
||||
.compact();
|
||||
}
|
||||
|
||||
public String generateHrGuestToken(@NonNull User user) {
|
||||
Map<String, Object> claims = new HashMap<>();
|
||||
claims.put(USER_ID, user.getId());
|
||||
claims.put(USERNAME, user.getUsername());
|
||||
claims.put(USER_EMAIL, user.getEmail());
|
||||
claims.put(USER_ROLE, user.getRole().name());
|
||||
claims.put(USER_REGISTRATION_STATUS, user.getRegistrationStatus().name());
|
||||
claims.put(SESSION_ID, "guest");
|
||||
claims.put(LAST_UPDATE, LocalDateTime.now().toString());
|
||||
return createToken(claims, user.getEmail(), 3_600_000L);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import com.posthub.gateway.security.JwtTokenProvider;
|
||||
import com.posthub.gateway.util.PasswordUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -33,6 +34,8 @@ public class AuthService {
|
||||
private final RefreshTokenRepository refreshTokenRepository;
|
||||
private final JwtTokenProvider jwtTokenProvider;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
@Value("${hr-guest.email}")
|
||||
private String hrGuestEmail;
|
||||
|
||||
public Mono<RagResponse<UserProfileDTO>> login(LoginRequest request) {
|
||||
return userRepository.findByEmail(request.getEmail().toLowerCase())
|
||||
@@ -104,6 +107,17 @@ public class AuthService {
|
||||
});
|
||||
}
|
||||
|
||||
public Mono<RagResponse<UserProfileDTO>> hrGuestToken() {
|
||||
return userRepository.findByEmail(hrGuestEmail)
|
||||
.switchIfEmpty(Mono.error(new ResponseStatusException(
|
||||
HttpStatus.NOT_FOUND, "HR guest user not found")))
|
||||
.map(user -> {
|
||||
String accessToken = jwtTokenProvider.generateHrGuestToken(user);
|
||||
UserProfileDTO dto = toUserProfileDto(user, accessToken, null);
|
||||
return RagResponse.createSuccessfulWithNewToken(dto);
|
||||
});
|
||||
}
|
||||
|
||||
private Mono<RagResponse<UserProfileDTO>> generateTokensAndBuildResponse(User user) {
|
||||
return refreshTokenRepository.findByUserId(user.getId())
|
||||
.flatMap(existing -> {
|
||||
|
||||
@@ -28,6 +28,9 @@ spring:
|
||||
token-uri: https://graph.facebook.com/v21.0/oauth/access_token
|
||||
user-info-uri: https://graph.facebook.com/v21.0/me?fields=id,name,email
|
||||
|
||||
# ---- Guest user (portfolio chat) ----
|
||||
hr-guest:
|
||||
email: ${HR_GUEST_EMAIL:}
|
||||
|
||||
# ---- R2DBC (reactive DB) ----
|
||||
r2dbc:
|
||||
@@ -114,6 +117,7 @@ auth:
|
||||
- /actuator/**
|
||||
- /api/*/v3/api-docs/**
|
||||
- /api/*/swagger-ui/**
|
||||
- /api/auth/hr-guest-token
|
||||
admin-paths:
|
||||
- /api/*/admin/**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user