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:
@@ -82,20 +82,14 @@ class UserController extends AbstractController
|
|||||||
}
|
}
|
||||||
// --- Fin gestion de l'image de profil ---
|
// --- Fin gestion de l'image de profil ---
|
||||||
|
|
||||||
// Synchronisation des données avec l'API
|
// Synchronisation des données avec l'API
|
||||||
$kazUser = [
|
$kazUser = $user->convertToKazUser();
|
||||||
'telephone' => $form->get('telephone')->getData(),
|
|
||||||
'alternateEmail' => $form->get('alternateEmail')->getData(),
|
|
||||||
];
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$apiKazService->updateUserData($user->getEmail(), $kazUser);
|
$apiKazService->updateUserData($user->getEmail(), $kazUser);
|
||||||
|
} catch (Exception $e) {
|
||||||
$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());
|
$this->addFlash('error', 'Impossible de mettre à jour votre profil' . $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sauvegarde en base de données
|
// Sauvegarde en base de données
|
||||||
$entityManager->flush();
|
$entityManager->flush();
|
||||||
// Message de confirmation et rechargement de la page
|
// 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')]
|
#[ORM\Column(length: 20, nullable: true, name: 'telephone')]
|
||||||
private ?string $telephone = null;
|
private ?string $telephone = null;
|
||||||
|
|
||||||
|
private ?string $numeroMembre = null;
|
||||||
|
|
||||||
|
private ?bool $mailEnabled = null;
|
||||||
|
|
||||||
|
private ?string $mailAlias = null;
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
$this->emailQuota = self::EMAIL_QUOTA_DEFAULT;
|
$this->emailQuota = self::EMAIL_QUOTA_DEFAULT;
|
||||||
}
|
}
|
||||||
@@ -312,6 +318,42 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
return $this;
|
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
|
// Fonction qui permet d'afficher les données de l'API sur la page de profil
|
||||||
public function updateFromKazUser($kazUser) : User
|
public function updateFromKazUser($kazUser) : User
|
||||||
{
|
{
|
||||||
@@ -332,31 +374,24 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
$this->setNextcloudQuota($kazUser['nextcloudQuota']);
|
$this->setNextcloudQuota($kazUser['nextcloudQuota']);
|
||||||
$this->setQuota($kazUser['quota']);
|
$this->setQuota($kazUser['quota']);
|
||||||
$this->setIdentifiantKaz($kazUser['identifiantKaz']);
|
$this->setIdentifiantKaz($kazUser['identifiantKaz']);
|
||||||
$this->setTelephone($kazUser['telephone'] ?? null);
|
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fonction qui permet de convertir les données de l'API vers $kazUser
|
// Fonction qui permet de convertir les données de l'API vers $kazUser
|
||||||
public function convertToKazUser() : array
|
public function convertToKazUser() : array
|
||||||
{
|
{
|
||||||
$fullName = implode(' ', array_filter([
|
$data = [
|
||||||
$this->getFirstName(),
|
'numeroMembre' => $this->getNumeroMembre(),
|
||||||
$this->getLastName()
|
|
||||||
]));
|
|
||||||
|
|
||||||
return [
|
|
||||||
'mail' => $this->getEmail(),
|
|
||||||
'sn' => $fullName,
|
|
||||||
'mailDeSecours' => $this->getAlternateEmail(),
|
'mailDeSecours' => $this->getAlternateEmail(),
|
||||||
'mailQuota' => $this->getEmailQuota(),
|
'mailEnabled' => $this->isMailEnabled(),
|
||||||
'agoraEnabled' => $this->hasAgoraAccess(),
|
|
||||||
'mobilizonEnabled' => $this->hasMobilizon(),
|
|
||||||
'nextcloudEnabled' => $this->hasNextcloudAccess(),
|
'nextcloudEnabled' => $this->hasNextcloudAccess(),
|
||||||
'nextcloudQuota' => $this->getNextcloudQuota(),
|
'mobilizonEnabled' => $this->hasMobilizon(),
|
||||||
'quota' => $this->getQuota(),
|
'agoraEnabled' => $this->hasAgoraAccess(),
|
||||||
'identifiantKaz' => $this->getIdentifiantKaz(),
|
'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
|
* 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
|
public function updateUserData(string $email, array $kazUser): void
|
||||||
{
|
{
|
||||||
$options['headers']['Authorization'] = 'Bearer ' . $this->getToken();
|
$options['headers']['Authorization'] = 'Bearer ' . $this->getToken();
|
||||||
$options['body'] = json_encode($kazUser);
|
$options['headers']['Content-Type'] = 'application/json';
|
||||||
// $response = $this->kazApiClient->request('PUT', "/ldap/user/add/$email", $options);
|
$options['json'] = $kazUser;
|
||||||
|
$response = $this->kazApiClient->request('PATCH', "/ldap/user/update/$email", $options);
|
||||||
|
|
||||||
if ($response->getStatusCode() !== 200) {
|
if ($response->getStatusCode() !== 200) {
|
||||||
throw new Exception('Erreur lors de l\'appel API : ' . $response->getStatusCode());
|
throw new Exception('Erreur lors de l\'appel API : ' . $response->getStatusCode());
|
||||||
|
|||||||
Reference in New Issue
Block a user