first commit
This commit is contained in:
78
src/Identity/Application/AuthServiceInterface.php
Normal file
78
src/Identity/Application/AuthServiceInterface.php
Normal file
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Netig\Netslim\Identity\Application;
|
||||
|
||||
use Netig\Netslim\Identity\Domain\Entity\User;
|
||||
use Netig\Netslim\Identity\Domain\Exception\WeakPasswordException;
|
||||
use Netig\Netslim\Kernel\Support\Exception\NotFoundException;
|
||||
|
||||
/**
|
||||
* Contrat du service d'authentification.
|
||||
*
|
||||
* Gère l'ouverture et la fermeture de session, la gestion du verrouillage par adresse IP
|
||||
* et le changement de mot de passe de l'utilisateur authentifié.
|
||||
*/
|
||||
interface AuthServiceInterface
|
||||
{
|
||||
/**
|
||||
* Retourne l'état du verrouillage de connexion pour une adresse IP.
|
||||
*
|
||||
* @return int Nombre de minutes restantes avant déverrouillage, ou `0` si l'IP peut tenter une connexion.
|
||||
*/
|
||||
public function checkRateLimit(string $ip): int;
|
||||
|
||||
/**
|
||||
* Enregistre une tentative de connexion échouée pour une adresse IP.
|
||||
*/
|
||||
public function recordFailure(string $ip): void;
|
||||
|
||||
/**
|
||||
* Réinitialise le compteur de tentatives de connexion pour une adresse IP.
|
||||
*/
|
||||
public function resetRateLimit(string $ip): void;
|
||||
|
||||
/**
|
||||
* Retourne l'état du verrouillage de demande de réinitialisation pour une adresse IP.
|
||||
*
|
||||
* @return int Nombre de minutes restantes avant déverrouillage, ou `0` si l'IP peut faire une nouvelle demande.
|
||||
*/
|
||||
public function checkPasswordResetRateLimit(string $ip): int;
|
||||
|
||||
/**
|
||||
* Enregistre une demande de réinitialisation pour une adresse IP.
|
||||
*/
|
||||
public function recordPasswordResetAttempt(string $ip): void;
|
||||
|
||||
/**
|
||||
* Tente d'authentifier un utilisateur à partir de son identifiant et de son mot de passe.
|
||||
*
|
||||
* @return User|null L'utilisateur authentifié, ou `null` si les identifiants sont invalides.
|
||||
*/
|
||||
public function authenticate(string $username, string $plainPassword): ?User;
|
||||
|
||||
/**
|
||||
* Change le mot de passe d'un utilisateur après vérification du mot de passe actuel.
|
||||
*
|
||||
* @throws NotFoundException Si l'utilisateur n'existe pas.
|
||||
* @throws \InvalidArgumentException Si le mot de passe actuel ne correspond pas.
|
||||
* @throws WeakPasswordException Si le nouveau mot de passe ne respecte pas la politique minimale.
|
||||
*/
|
||||
public function changePassword(int $userId, string $currentPassword, string $newPassword): void;
|
||||
|
||||
/**
|
||||
* Indique si une session authentifiée est actuellement active.
|
||||
*/
|
||||
public function isLoggedIn(): bool;
|
||||
|
||||
/**
|
||||
* Ouvre une session pour l'utilisateur fourni.
|
||||
*/
|
||||
public function login(User $user): void;
|
||||
|
||||
/**
|
||||
* Déconnecte l'utilisateur courant et détruit la session associée.
|
||||
*/
|
||||
public function logout(): void;
|
||||
}
|
||||
Reference in New Issue
Block a user