JwtAuthenticator.java
package com.wilzwert.myjobs.infrastructure.security.jwt;
import com.wilzwert.myjobs.core.domain.model.user.AuthenticatedUser;
import com.wilzwert.myjobs.core.domain.model.user.User;
import com.wilzwert.myjobs.core.domain.model.user.ports.driven.Authenticator;
import com.wilzwert.myjobs.infrastructure.security.model.RefreshToken;
import com.wilzwert.myjobs.infrastructure.security.service.JwtService;
import com.wilzwert.myjobs.infrastructure.security.service.RefreshTokenService;
import org.springframework.security.core.AuthenticationException;
import org.springframework.stereotype.Component;
/**
* @author Wilhelm Zwertvaegher
*/
@Component
public class JwtAuthenticator implements Authenticator {
private final JwtService jwtService;
private final RefreshTokenService refreshTokenService;
public JwtAuthenticator(final JwtService jwtService, final RefreshTokenService refreshTokenService) {
this.jwtService = jwtService;
this.refreshTokenService = refreshTokenService;
}
@Override
public AuthenticatedUser authenticate(User user) throws AuthenticationException {
String token = jwtService.generateToken(user.getId().value().toString());
RefreshToken refreshToken = refreshTokenService.createRefreshToken(user);
return new JwtAuthenticatedUser(user.getEmail(), user.getUsername(), token, refreshToken.getToken(), user.getRole());
}
}