first commit

This commit is contained in:
julien
2026-03-20 22:13:41 +01:00
commit 41f8b3afb4
323 changed files with 27222 additions and 0 deletions

View 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;
}