using ApplicationLayer.InfrastructureServicesInterfaces;
using ApplicationLayer.Services.AuthServices.Common;
using ApplicationLayer.Services.AuthServices.LoginService.Exceptions;
using ApplicationLayer.Services.AuthServices.NeededServices;
using ApplicationLayer.Services.AuthServices.Requests;
namespace ApplicationLayer.Services.AuthServices.LoginService;
/// 
public class LoginService(IUsersRepository users, ITokenGenerator tokenGenerator) : ILoginService
{
    async Task ILoginService.LoginAsync(LoginRequest request, CancellationToken cancellationToken)
    {
        var user = await users.FindByEmailAsync(request.AuthData.Email, cancellationToken);
        if (user is null || user.Password != request.AuthData.Password)
        {
            throw new IncorrectLoginDataException();
        }
        return tokenGenerator.CreateToken(user);
    }
}