feat/login #10

Open
maurine wants to merge 12 commits from feat/login into main
3 changed files with 64 additions and 27 deletions
Showing only changes of commit 6f9523f9e7 - Show all commits

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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());