57 lines
3.1 KiB
C#
57 lines
3.1 KiB
C#
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; }
|
|
/// <summary>
|
|
/// Authenticates a user with the provided credentials and returns the corresponding user account.
|
|
/// </summary>
|
|
/// <param name="username">The username of the user attempting to log in.</param>
|
|
/// <param name="password">The password associated with the username.</param>
|
|
/// <returns>A <see cref="Task{User}"/> representing the asynchronous operation, containing the authenticated <see cref="User"/>.</returns>
|
|
Task<User> Login(string username, string password);
|
|
/// <summary>
|
|
/// Authenticates a user based on the provided HTTP context.
|
|
/// </summary>
|
|
/// <param name="context">The HTTP context containing the request information used to perform the login.</param>
|
|
/// <returns>A task that represents the asynchronous login operation. The task result contains the authenticated <see cref="User"/>.</returns>
|
|
Task<User> Login(HttpContext context);
|
|
|
|
/// <summary>
|
|
/// Authenticates a user based on the provided credentials.
|
|
/// </summary>
|
|
/// <param name="username">The username of the user to authenticate.</param>
|
|
/// <param name="password">The password of the user to authenticate.</param>
|
|
/// <returns>A task that represents the asynchronous operation. The task result contains the authenticated <see cref="User"/>.</returns>
|
|
Task<User> Authenticate(string username, string password);
|
|
/// <summary>
|
|
/// Retrieves a user by their unique identifier, returning null if no matching user is found.
|
|
/// </summary>
|
|
/// <param name="id">The unique identifier of the user to look up.</param>
|
|
/// <returns>The user with the specified identifier, or null if no user is found.</returns>
|
|
Task<User?> GetById(ObjectId id);
|
|
/// <summary>
|
|
/// Retrieves a user from the data store by their email address, or returns null if no matching user is found.
|
|
/// </summary>
|
|
/// <param name="email">The email address used to look up the user.</param>
|
|
/// <returns>A task that resolves to the <see cref="User"/> matching the provided email, or null if no user is found.</returns>
|
|
Task<User?> GetByEmail(string email);
|
|
/// <summary>
|
|
/// Retrieves a user by their username asynchronously, returning <c>null</c> if no matching user is found.
|
|
/// </summary>
|
|
/// <param name="username">The username to look up.</param>
|
|
/// <returns>A <see cref="Task{User}"/> that resolves to the matching <see cref="User"/>, or <c>null</c> if no user exists with the specified username.</returns>
|
|
Task<User?> GetByUsername(string username);
|
|
|
|
/// <summary>
|
|
/// Asynchronously retrieves a list of all users in the system.
|
|
/// </summary>
|
|
/// <returns>A task that represents the asynchronous operation, containing a list of all <see cref="User"/> entities.</returns>
|
|
Task<List<User>> GetAllUsers();
|
|
} |