package org.initialde.yakasave.Infrastructure.authentication;
import org.initialde.yakasave.Api.Requests.LoginRequest;
import org.initialde.yakasave.Domain.Entities.User;
import org.initialde.yakasave.Infrastructure.authentication.Jwt.JwtService;

import java.util.UUID;

public class FakeAuthenticationGateway implements AuthenticationGateway {
    private User authenticatedUser;
    private final JwtService tokenGenerator;

    public FakeAuthenticationGateway(JwtService tokenGenerator) {
        this.tokenGenerator = tokenGenerator;
    }

    @Override
    public User getAuthenticatedUser(){
        return authenticatedUser;
    }

    public String authenticate(LoginRequest loginRequest) {
        authenticatedUser = new User(UUID.randomUUID(), loginRequest.username(), loginRequest.password());
        return tokenGenerator.generateToken(loginRequest);
    }

    public String authenticate(User user) {
        authenticatedUser = user;
        return tokenGenerator.generateToken(new LoginRequest(user.getUsername(), user.getPassword()));
    }
}
