feat(api kaz): Connexion à l'api kaz.

- Suppression des migrations, templates et configurations inutiles (ex. `compose.override.yaml`).
- Mise à jour de l'entité `User` :
  - Renommage des attributs pour correspondre aux conventions (`emailDeSecours` → `alternateEmail`, etc.).
  - Implémentation d'un mapper `updateFromKazUser` pour synchroniser les données depuis l'API Kaz.
- Refactorisation des migrations pour aligner les changements de schéma.
- Mise à jour du formulaire utilisateur et des fixtures en conséquence.
- Ajout du template Twig `profil_infos.html.twig` pour afficher les informations utilisateur. (A supprimer)
This commit is contained in:
MLeveque
2026-03-29 13:45:07 +02:00
parent 23789ab33e
commit e7e6d7c1af
16 changed files with 153 additions and 159 deletions

View File

@@ -27,7 +27,7 @@ class UserController extends AbstractController
* Permet de vérifier si un utilisateur existe dans le ldap.
*
* @param string $email L'adresse e-mail de l'utilisateur.
* @param KazApiService $apiClient Le service utilisé pour récupérer les données utilisateur.
* @param KazApiService $apiKazService Le service utilisé pour récupérer les données utilisateur.
*
* @return Response La page index utilisateur rendue.
* @throws ClientExceptionInterface
@@ -37,29 +37,32 @@ class UserController extends AbstractController
* @throws TransportExceptionInterface
*/
# #[Route('/user/{email}', name: 'app_user', methods: ['GET'])]
# public function index(string $email, KazApiService $apiClient): Response
# {
# $exist = $apiClient->getUserData($email);
#
# return $this->render('user/index.html.twig', [
# 'exist' => $exist,
# ]);
# }
#[Route('/user/{email}', name: 'app_user_by_mail', methods: ['GET'])]
public function index(string $email, KazApiService $apiKazService): Response
{
$user = $apiKazService->getUserData($email);
return $this->render('user/profil_infos.html.twig', [
'user' => $user,
]);
}
/* TODO : Param l'API avec un Serializer pour la lecture du fichier JSON ? */
/* TODO : Param l'API avec un Serializer pour la lecture du fichier JSON ? */
#[Route('/mon-profil', name: 'app_user', methods: ['GET', 'POST'])]
#[IsGranted('ROLE_USER')]
public function showProfile(
Request $request,
EntityManagerInterface $entityManager,
FileUploader $fileUploader
FileUploader $fileUploader,
KazApiService $apiKazService
): Response {
# Récupération de l'utilisateur actuellement connecté
$user = $this->getUser();
/* Utilisation des fixtures pour vérifier la mise en page.
TODO: modifier pour que ça communique avec l'API */
$kazUser = $apiKazService->getUserData($user->getEmail());
$user = $user->updateFromKazUser($kazUser);
//TODO: modifier pour que ça communique avec l'API */
# Création du formulaire lié à l'utilisateur connecté
$form = $this->createForm(UserProfileType::class, $user);
@@ -82,6 +85,22 @@ class UserController extends AbstractController
$user->setPhoto($newFilename);
}
$alternateEmail = $form->get('alternateEmail')->getData();
$regexEmail = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';
if(isset($alternateEmail) && preg_match($regexEmail, $alternateEmail)) {
$user->setAlternateEmail($form->get('alternateEmail')->getData());
} else {
$alternateEmail->addError(new FormError('L\'adresse e-mail n\'est pas valide.'));
}
$telephone = $form->get('telephone')->getData();
$regexTelephone = '/^[0-9\+\s\.\-\(\)]+$/';
if(isset($telephone) && preg_match($regexTelephone, $telephone)) {
$user->setTelephone($telephone);
} else {
$telephone->addError(new FormError('Le numéro de téléphone n\'est pas valide.'));
}
# Sauvegarde en base de données
$entityManager->flush();
@@ -105,9 +124,6 @@ class UserController extends AbstractController
EntityManagerInterface $entityManager
): Response
{
# Récupération de l'utilisateur actuellement connecté
$user = $this->getUser();
# Création du formulaire
$form = $this->createForm(ChangePasswordType::class);