using adas_core.Domain.Enums;
using adas_core.Domain.Models.MongoModels;
using Microsoft.AspNetCore.Http;
using MongoDB.Bson;

namespace adas_core.Authentication.Interfaces;

public interface ILoginService
{
    bool AllowPassword { get; }
    UserEnum.LoginMethod Method { get; }
    Task<User> Login(string username, string password);
    Task<User> Login(HttpContext context);

    Task<User> Authenticate(string username, string password);
    Task<User?> GetById(ObjectId id);
    Task<User?> GetByEmail(string email);
    Task<User?> GetByUsername(string username);

    Task<List<User>> GetAllUsers();
}