using SchotzIadKmTracker.Api.Models.DTOs; namespace SchotzIadKmTracker.Api.Services; /// /// Logique métier d'authentification de l'application mono-utilisateur : /// existence du compte, inscription, connexion, demande et application de la /// réinitialisation du mot de passe. /// public interface IAuthService { /// /// Indique si un compte existe déjà, afin d'orienter le frontend (inscription vs connexion). /// /// Jeton d'annulation de l'opération. /// true s'il existe au moins un compte, false sinon (Exigences 1.2, 9.1). Task CompteExisteAsync(CancellationToken ct); /// /// Inscrit le compte unique. Lève /// si un compte existe déjà (Exigence 1). /// /// Email et mot de passe fournis à l'inscription. /// Jeton d'annulation de l'opération. Task RegisterAsync(RegisterDto dto, CancellationToken ct); /// /// Authentifie le compte et émet un jeton JWT. Lève /// si les identifiants sont invalides (Exigence 2). /// /// Identifiants de connexion (email et mot de passe). /// Jeton d'annulation de l'opération. /// Le jeton JWT émis et sa date d'expiration. Task LoginAsync(LoginDto dto, CancellationToken ct); /// /// Traite une demande de réinitialisation de mot de passe. Par principe de non-divulgation, /// se termine toujours sans exception, que l'email corresponde ou non à un compte (Exigence 6.6). /// /// Email pour lequel demander la réinitialisation. /// Jeton d'annulation de l'opération. Task ForgotPasswordAsync(ForgotPasswordDto dto, CancellationToken ct); /// /// Réinitialise le mot de passe à partir d'un jeton de réinitialisation. Lève /// si le jeton est inconnu ou déjà utilisé, /// s'il a expiré (Exigence 7). /// /// Jeton de réinitialisation et nouveau mot de passe. /// Jeton d'annulation de l'opération. Task ResetPasswordAsync(ResetPasswordDto dto, CancellationToken ct); /// /// Change le mot de passe d'un utilisateur déjà authentifié (page Compte utilisateur). /// Contrairement à (jeton reçu par email), exige la /// saisie de l'ancien mot de passe. Lève /// si celui-ci est incorrect. /// /// Mot de passe actuel et nouveau mot de passe. /// Jeton d'annulation de l'opération. Task ChangePasswordAsync(ChangePasswordDto dto, CancellationToken ct); }