fix(user): Appel à la route de modification d'un utilisateur dans l'API. (PATCH /ldap/user/update/{email})
- Adaptation de l'objet kazUser pour qu'il corresponde a l'attente de l'api.
This commit is contained in:
@@ -83,19 +83,13 @@ class UserController extends AbstractController
|
||||
// --- Fin gestion de l'image de profil ---
|
||||
|
||||
// Synchronisation des données avec l'API
|
||||
$kazUser = [
|
||||
'telephone' => $form->get('telephone')->getData(),
|
||||
'alternateEmail' => $form->get('alternateEmail')->getData(),
|
||||
];
|
||||
$kazUser = $user->convertToKazUser();
|
||||
|
||||
try {
|
||||
$apiKazService->updateUserData($user->getEmail(), $kazUser);
|
||||
|
||||
$this->addFlash('success', 'Votre profil a été mis à jour avec succès !');
|
||||
} catch (Exception $e) {
|
||||
$this->addFlash('error', 'Impossible de mettre à jour votre profil' . $e->getMessage());
|
||||
}
|
||||
|
||||
// Sauvegarde en base de données
|
||||
$entityManager->flush();
|
||||
// Message de confirmation et rechargement de la page
|
||||
|
||||
@@ -74,6 +74,12 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
||||
#[ORM\Column(length: 20, nullable: true, name: 'telephone')]
|
||||
private ?string $telephone = null;
|
||||
|
||||
private ?string $numeroMembre = null;
|
||||
|
||||
private ?bool $mailEnabled = null;
|
||||
|
||||
private ?string $mailAlias = null;
|
||||
|
||||
public function __construct() {
|
||||
$this->emailQuota = self::EMAIL_QUOTA_DEFAULT;
|
||||
}
|
||||
@@ -312,6 +318,42 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getNumeroMembre(): ?string
|
||||
{
|
||||
return $this->numeroMembre;
|
||||
}
|
||||
|
||||
public function setNumeroMembre(?string $numeroMembre): static
|
||||
{
|
||||
$this->numeroMembre = $numeroMembre;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isMailEnabled(): ?bool
|
||||
{
|
||||
return $this->mailEnabled;
|
||||
}
|
||||
|
||||
public function setMailEnabled(?bool $mailEnabled): static
|
||||
{
|
||||
$this->mailEnabled = $mailEnabled;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getMailAlias(): ?string
|
||||
{
|
||||
return $this->mailAlias;
|
||||
}
|
||||
|
||||
public function setMailAlias(?string $mailAlias): static
|
||||
{
|
||||
$this->mailAlias = $mailAlias;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
// Fonction qui permet d'afficher les données de l'API sur la page de profil
|
||||
public function updateFromKazUser($kazUser) : User
|
||||
{
|
||||
@@ -332,31 +374,24 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
||||
$this->setNextcloudQuota($kazUser['nextcloudQuota']);
|
||||
$this->setQuota($kazUser['quota']);
|
||||
$this->setIdentifiantKaz($kazUser['identifiantKaz']);
|
||||
$this->setTelephone($kazUser['telephone'] ?? null);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
// Fonction qui permet de convertir les données de l'API vers $kazUser
|
||||
public function convertToKazUser() : array
|
||||
{
|
||||
$fullName = implode(' ', array_filter([
|
||||
$this->getFirstName(),
|
||||
$this->getLastName()
|
||||
]));
|
||||
|
||||
return [
|
||||
'mail' => $this->getEmail(),
|
||||
'sn' => $fullName,
|
||||
$data = [
|
||||
'numeroMembre' => $this->getNumeroMembre(),
|
||||
'mailDeSecours' => $this->getAlternateEmail(),
|
||||
'mailQuota' => $this->getEmailQuota(),
|
||||
'agoraEnabled' => $this->hasAgoraAccess(),
|
||||
'mobilizonEnabled' => $this->hasMobilizon(),
|
||||
'mailEnabled' => $this->isMailEnabled(),
|
||||
'nextcloudEnabled' => $this->hasNextcloudAccess(),
|
||||
'nextcloudQuota' => $this->getNextcloudQuota(),
|
||||
'quota' => $this->getQuota(),
|
||||
'mobilizonEnabled' => $this->hasMobilizon(),
|
||||
'agoraEnabled' => $this->hasAgoraAccess(),
|
||||
'identifiantKaz' => $this->getIdentifiantKaz(),
|
||||
'telephone' => $this->getTelephone(),
|
||||
'mailAlias' => $this->getMailAlias(),
|
||||
'quota' => $this->getQuota(),
|
||||
];
|
||||
|
||||
return array_filter($data, fn($value) => $value !== null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,12 +85,20 @@ class KazApiService
|
||||
|
||||
/**
|
||||
* Envoie les nouvelles données saisies par l'utilisateur vers l'API
|
||||
*
|
||||
* @throws ClientExceptionInterface
|
||||
* @throws DecodingExceptionInterface
|
||||
* @throws RedirectionExceptionInterface
|
||||
* @throws ServerExceptionInterface
|
||||
* @throws TransportExceptionInterface
|
||||
* @throws Exception
|
||||
*/
|
||||
public function updateUserData(string $email, array $kazUser): void
|
||||
{
|
||||
$options['headers']['Authorization'] = 'Bearer ' . $this->getToken();
|
||||
$options['body'] = json_encode($kazUser);
|
||||
// $response = $this->kazApiClient->request('PUT', "/ldap/user/add/$email", $options);
|
||||
$options['headers']['Content-Type'] = 'application/json';
|
||||
$options['json'] = $kazUser;
|
||||
$response = $this->kazApiClient->request('PATCH', "/ldap/user/update/$email", $options);
|
||||
|
||||
if ($response->getStatusCode() !== 200) {
|
||||
throw new Exception('Erreur lors de l\'appel API : ' . $response->getStatusCode());
|
||||
|
||||
Reference in New Issue
Block a user