package ovh.herisson.Clyde.Services;

import org.springframework.stereotype.Service;
import ovh.herisson.Clyde.Tables.Token;
import ovh.herisson.Clyde.Tables.User;

import java.util.Date;

@Service
public class AuthenticatorService {

    private final TokenService tokenService;
    private final UserService userService;

    public AuthenticatorService(TokenService tokenService, UserService userService){
        this.tokenService = tokenService;
        this.userService = userService;
    }

    public User getUserFromToken(String token){
        return tokenService.getUserFromToken(token);
    }


    public String login(String identifier, String password, Date expirationDate){
        User user = userService.getUser(identifier);
        if (user == null){return null;}
        if (!userService.checkPassword(user,password)){return null;}
        String token = tokenService.generateNewToken();
        tokenService.saveToken(new Token(user, token,expirationDate));
        return token;
    }
}
