/ src / services / UserValidationService.php
UserValidationService.php
 1  <?php
 2  
 3  namespace ButA2SaeS3\services;
 4  
 5  use ButA2SaeS3\dto\AddUserDto;
 6  use ButA2SaeS3\validation\ValidationResult;
 7  
 8  class UserValidationService
 9  {
10      public static function validateCreateUser(array $data): ValidationResult
11      {
12          $result = ValidationResult::empty();
13  
14          $username = trim($data['username'] ?? '');
15          $password = $data['password'] ?? '';
16          $passwordConfirm = $data['password-confirm'] ?? '';
17          $role = trim($data['role'] ?? '');
18          $poles = $data['poles'] ?? [];
19  
20          if ($username === '') {
21              $result->addMessage('username', "Le nom d'utilisateur est requis");
22          }
23  
24          if ($password === '') {
25              $result->addMessage('password', "Le mot de passe est requis");
26          }
27  
28          if ($passwordConfirm === '') {
29              $result->addMessage('password-confirm', "La confirmation est requise");
30          } elseif ($password !== $passwordConfirm) {
31              $result->addMessage('password-confirm', "Les mots de passe ne correspondent pas");
32          }
33  
34          if ($role === '') {
35              $result->addMessage('role', "Le rôle est requis");
36          } elseif ($role === 'responsable-pole' && empty($poles)) {
37              $result->addMessage('poles', "Sélectionner au moins un pôle");
38          }
39  
40          if ($result->hasMessages()) {
41              return $result;
42          }
43  
44          $dto = new AddUserDto(
45              $username,
46              $password,
47              $role,
48              is_array($poles) ? $poles : []
49          );
50          $result->setValue($dto);
51          return $result;
52      }
53  }