Working state
This commit is contained in:
@@ -3,67 +3,36 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\User;
|
||||
|
||||
use App\Shared\Pagination\PaginatedResult;
|
||||
use App\User\Exception\DuplicateEmailException;
|
||||
use App\User\Exception\DuplicateUsernameException;
|
||||
use App\User\Exception\InvalidRoleException;
|
||||
use App\User\Exception\WeakPasswordException;
|
||||
|
||||
/**
|
||||
* Contrat du service de gestion des utilisateurs.
|
||||
*
|
||||
* Permet de mocker le service dans les tests unitaires sans dépendre
|
||||
* de la classe concrète finale UserService.
|
||||
*/
|
||||
interface UserServiceInterface
|
||||
{
|
||||
/**
|
||||
* Retourne tous les utilisateurs triés par date de création (ordre croissant).
|
||||
*
|
||||
* @return User[]
|
||||
*/
|
||||
/** @return User[] */
|
||||
public function findAll(): array;
|
||||
|
||||
/**
|
||||
* Trouve un utilisateur par son identifiant.
|
||||
*
|
||||
* @param int $id Identifiant de l'utilisateur
|
||||
*
|
||||
* @return User|null L'utilisateur trouvé, ou null s'il n'existe pas
|
||||
* @return PaginatedResult<User>
|
||||
*/
|
||||
public function findPaginated(int $page, int $perPage): PaginatedResult;
|
||||
|
||||
public function findById(int $id): ?User;
|
||||
|
||||
/**
|
||||
* Supprime un utilisateur de la base de données.
|
||||
*
|
||||
* @param int $id Identifiant de l'utilisateur à supprimer
|
||||
*/
|
||||
public function delete(int $id): void;
|
||||
|
||||
/**
|
||||
* Crée un nouveau compte utilisateur.
|
||||
*
|
||||
* @param string $username Nom d'utilisateur souhaité (min. 3 caractères)
|
||||
* @param string $email Adresse e-mail valide
|
||||
* @param string $plainPassword Mot de passe en clair (min. 8 caractères)
|
||||
* @param string $role Rôle attribué : 'user', 'editor' ou 'admin' (défaut : 'user')
|
||||
*
|
||||
* @return User L'utilisateur créé (sans mot de passe en clair)
|
||||
*
|
||||
* @throws DuplicateUsernameException Si le nom d'utilisateur est déjà pris
|
||||
* @throws DuplicateEmailException Si l'adresse e-mail est déjà utilisée
|
||||
* @throws WeakPasswordException Si le mot de passe est trop court
|
||||
* @throws InvalidRoleException Si le rôle est invalide
|
||||
* @throws \InvalidArgumentException Si le nom ou l'email ne passent pas la validation
|
||||
* @throws DuplicateUsernameException
|
||||
* @throws DuplicateEmailException
|
||||
* @throws WeakPasswordException
|
||||
* @throws InvalidRoleException
|
||||
*/
|
||||
public function createUser(string $username, string $email, string $plainPassword, string $role = User::ROLE_USER): User;
|
||||
|
||||
/**
|
||||
* Met à jour le rôle d'un utilisateur.
|
||||
*
|
||||
* @param int $id Identifiant de l'utilisateur
|
||||
* @param string $role Nouveau rôle : 'user', 'editor' ou 'admin'
|
||||
*
|
||||
* @throws InvalidRoleException Si le rôle est invalide
|
||||
* @throws InvalidRoleException
|
||||
*/
|
||||
public function updateRole(int $id, string $role): void;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user