Commit 51ca5bff authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Merge branch 'release_6.0.8' of git.unicaen.fr:open-source/sygal into release_6.0.8

parents 79556ceb 3787933b
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -3,7 +3,9 @@ Journal des modifications

6.0.8
-----
- [THESE] Ajout de logos sur le document des co-encadrements
- Ajout de logos sur le document des co-encadrements
- Possibilité de supprimer un compte utilisateur.
- [FIX] Rapports d'activité : le rôle Maison du doctorat ne pouvait pas dévalider un rapport d'activité (en cas de validation du Doctorant). 

6.0.7
-----
+5 −5
Original line number Diff line number Diff line
version: '3.7'

networks:
  sygalnet:
    name: sygalnet
    driver: bridge

# Settings and configurations that are common for all containers
x-minio-common: &minio-common
  image: minio/minio
@@ -122,8 +127,3 @@ volumes:
  data3-2:
  data4-1:
  data4-2:

networks:
  sygalnet:
    name: sygalnet
    driver: bridge
 No newline at end of file
+10 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ return [
                        'ajouter-role',
                        'ajouter',
                        'ajouterFromIndividu',
                        'supprimer',
                        'lier-individu',
                        'lier-nouvel-individu',
                        'delier-individu',
@@ -117,6 +118,15 @@ return [
                            ],
                        ],
                    ],
                    'supprimer' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/supprimer/:utilisateur',
                            'defaults'    => [
                                'action' => 'supprimer',
                            ],
                        ],
                    ],
                    'gerer-utilisateur' => [
                        'type'          => Segment::class,
                        'options'       => [
+21 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ use Application\Search\Controller\SearchControllerInterface;
use Application\Search\Controller\SearchControllerTrait;
use Application\Search\SearchServiceAwareTrait;
use Application\Service\Notification\ApplicationNotificationFactoryAwareTrait;
use Exception;
use These\Service\Acteur\ActeurServiceAwareTrait;
use Structure\Service\EcoleDoctorale\EcoleDoctoraleServiceAwareTrait;
use Structure\Service\Etablissement\EtablissementServiceAwareTrait;
@@ -41,6 +42,7 @@ use UnicaenAuth\Service\ShibService;
use UnicaenAuth\Service\Traits\UserServiceAwareTrait;
use UnicaenAuthToken\Controller\TokenController;
use UnicaenAuthToken\Service\TokenServiceAwareTrait;
use Webmozart\Assert\Assert;

/**
 * @method \Application\Controller\Plugin\Forward forward()
@@ -284,6 +286,25 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
        ]);
    }

    public function supprimerAction(): Response|ViewModel
    {
        if ($post = $this->params()->fromPost()) {
            Assert::keyExists($post, 'utilisateur');
            Assert::eq($post['utilisateur'], $this->params()->fromRoute('utilisateur'));
            $id = $post['utilisateur'];
            $utilisateur = $this->utilisateurService->getRepository()->find($id); /** @var Utilisateur $utilisateur */
            try {
                $this->utilisateurService->supprimerUtilisateur($utilisateur);
                $this->flashMessenger()->addSuccessMessage("Compte utilisateur suivant supprimé avec succès : " . $utilisateur->getUsername());
            } catch (Exception $e) {
                $this->flashMessenger()->addErrorMessage("Le compte utilisateur '{$utilisateur->getUsername()}' n'a pas pu être supprimé. " . $e->getMessage());
                return $this->redirect()->toRoute('utilisateur/voir', ['utilisateur' => $utilisateur->getId()]);
            }
        }

        return $this->redirect()->toRoute('utilisateur');
    }

    /**
     * Usurpe l'identité d'un **individu**.
     *
+13 −7
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@

namespace Application\Service\Utilisateur;

use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException;
use Exception;
use Individu\Entity\Db\Individu;
use Application\Entity\Db\Repository\UtilisateurRepository;
use Application\Entity\Db\Utilisateur;
@@ -181,15 +183,19 @@ class UtilisateurService extends BaseService
    }

    /**
     * Fonction utilisée lors de la déassociation d'un utilisateur/individu et un membre d'un jury de thèse
     * @param AbstractUser $utilisateur
     * @throws \Exception
     */
    public function supprimerUtilisateur(AbstractUser $utilisateur) {
    public function supprimerUtilisateur(AbstractUser $utilisateur): void
    {
        try {
            $this->getEntityManager()->remove($utilisateur);
            $this->getEntityManager()->flush($utilisateur);
        } catch (OptimisticLockException $e) {
            throw new RuntimeException("Impossible d'enregistrer l'utilisateur", null, $e);
            $this->entityManager->remove($utilisateur);
            $this->entityManager->flush();
        } catch (Exception $e) {
            $precision = '';
            if ($e instanceof ForeignKeyConstraintViolationException) {
                $precision = " car il est référencé dans d'autres tables de données";
            }
            throw new Exception(sprintf("Impossible de supprimer ce compte utilisateur%s.", $precision), null, $e);
        }
    }

Loading