This commit is contained in:
2026-03-19 19:18:02 +01:00
parent 5ae4f831bf
commit 117e794753
3 changed files with 24 additions and 0 deletions

View File

@@ -60,6 +60,12 @@ public class AuthController {
.map(ResponseEntity::ok); .map(ResponseEntity::ok);
} }
@PostMapping("/devops-guest-token")
public Mono<ResponseEntity<RagResponse<UserProfileDTO>>> devopsGuestToken() {
return authService.devopsGuestToken()
.map(ResponseEntity::ok);
}
private void addAuthCookie(ServerHttpResponse response, String token) { private void addAuthCookie(ServerHttpResponse response, String token) {
ResponseCookie cookie = ResponseCookie.from("Authorization", token) ResponseCookie cookie = ResponseCookie.from("Authorization", token)
.httpOnly(true) .httpOnly(true)

View File

@@ -34,9 +34,13 @@ public class AuthService {
private final RefreshTokenRepository refreshTokenRepository; private final RefreshTokenRepository refreshTokenRepository;
private final JwtTokenProvider jwtTokenProvider; private final JwtTokenProvider jwtTokenProvider;
private final PasswordEncoder passwordEncoder; private final PasswordEncoder passwordEncoder;
@Value("${hr-guest.email}") @Value("${hr-guest.email}")
private String hrGuestEmail; private String hrGuestEmail;
@Value("${devops-guest.email}")
private String devopsGuestEmail;
public Mono<RagResponse<UserProfileDTO>> login(LoginRequest request) { public Mono<RagResponse<UserProfileDTO>> login(LoginRequest request) {
return userRepository.findByEmail(request.getEmail().toLowerCase()) return userRepository.findByEmail(request.getEmail().toLowerCase())
.switchIfEmpty(Mono.error(new ResponseStatusException( .switchIfEmpty(Mono.error(new ResponseStatusException(
@@ -118,6 +122,17 @@ public class AuthService {
}); });
} }
public Mono<RagResponse<UserProfileDTO>> devopsGuestToken() {
return userRepository.findByEmail(devopsGuestEmail)
.switchIfEmpty(Mono.error(new ResponseStatusException(
HttpStatus.NOT_FOUND, "DevOps 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) { private Mono<RagResponse<UserProfileDTO>> generateTokensAndBuildResponse(User user) {
return refreshTokenRepository.findByUserId(user.getId()) return refreshTokenRepository.findByUserId(user.getId())
.flatMap(existing -> { .flatMap(existing -> {

View File

@@ -31,6 +31,8 @@ spring:
# ---- Guest user (portfolio chat) ---- # ---- Guest user (portfolio chat) ----
hr-guest: hr-guest:
email: ${HR_GUEST_EMAIL:} email: ${HR_GUEST_EMAIL:}
devops-guest:
email: ${DEVOPS_GUEST_EMAIL:}
# ---- R2DBC (reactive DB) ---- # ---- R2DBC (reactive DB) ----
r2dbc: r2dbc:
@@ -120,6 +122,7 @@ auth:
- /api/*/v3/api-docs/** - /api/*/v3/api-docs/**
- /api/*/swagger-ui/** - /api/*/swagger-ui/**
- /api/auth/hr-guest-token - /api/auth/hr-guest-token
- /api/auth/devops-guest-token
admin-paths: admin-paths:
- /api/*/admin/** - /api/*/admin/**