Commit 2027d825 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Possibilité de spécifier le username dans l'URL de modification de mot de passe (paramètre GET).

parent e3505831
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ Journal des modifications
- Possibilité de déclarer un individu apatride (i.e. sans nationalité) ; réorganisation du formulaire.
- Suppression de la contrainte vérifiant si le membre est un rapporteur lors de la liaison entre un acteur et un membre dans la prép. de la soutenance.
- Nouveau favicon, moche mais universel !
- Possibilité de spécifier le username dans l'URL de modification de mot de passe (paramètre GET).
- [FIX] Le bouton de recherche/liaison de notice IdRef ne fonctionnait pas dans une modale (unicaen/idref 1.0.0 requis).
- [FIX] Synchro : plantage lors de la génération du diff (unicaen/db-import 6.1.3 nécessaire car nouvelle plateforme Doctrine\DBAL\Platforms\PostgreSQL120Platform).
- [FIX] Le menu Nos Thèses s'affichait à tort pour le rôle Doctorant (du fait que ce dernier est désormais tagué établissement-dépendant).
+1 −0
Changes for module/Application/config/others/utilisateur.config.php: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -186,6 +186,7 @@ return [
                        'options'       => [
                            'route'       => '/init-compte/:token',
                            'defaults'    => [
                                /** @see \Application\Controller\UtilisateurController::initCompteAction() */
                                'action' => 'init-compte',
                            ],
                        ],
+16 −4
Changes for module/Application/src/Application/Controller/UtilisateurController.php: 16 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -423,7 +423,12 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
            $user = $this->utilisateurService->createFromIndividu($individu, $individu->getEmailPro(), 'none');
            $this->userService->updateUserPasswordResetToken($user);

            $url = $this->url()->fromRoute('utilisateur/init-compte', ['token' => $user->getPasswordResetToken()], ['force_canonical' => true], true);
            $url = $this->url()->fromRoute(
                'utilisateur/init-compte',
                ['token' => $user->getPasswordResetToken()],
                ['query' => ['username' => $user->getUsername()], 'force_canonical' => true],
                true
            );
            try {
                $notif = $this->applicationNotificationFactory->createNotificationInitialisationCompte($user, $url);
                $this->notifierService->trigger($notif);
@@ -446,7 +451,12 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle

        if ($utilisateur !== null) {
            $this->userService->updateUserPasswordResetToken($utilisateur);
            $url = $this->url()->fromRoute('utilisateur/init-compte', ['token' => $utilisateur->getPasswordResetToken()], ['force_canonical' => true], true);
            $url = $this->url()->fromRoute(
                'utilisateur/init-compte',
                ['token' => $utilisateur->getPasswordResetToken()],
                ['query' => ['username' => $utilisateur->getUsername()], 'force_canonical' => true],
                true
            );

            try {
                $notif = $this->applicationNotificationFactory->createNotificationResetCompte($utilisateur, $url);
@@ -464,6 +474,8 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
    public function initCompteAction(): Response|ViewModel
    {
        $token = $this->params()->fromRoute('token');
        $username = $this->params()->fromQuery('username');

        $utilisateur = $this->utilisateurService->getRepository()->findByToken($token);
        if ($utilisateur === null) {
            return new ViewModel([
@@ -472,8 +484,8 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
        }

        $this->initCompteForm->setUsername($utilisateur->getUsername());
        $this->initCompteForm->setAttribute('action', $this->url()->fromRoute('utilisateur/init-compte', ['token' => $token], [], true));
        $this->initCompteForm->bind(new Utilisateur());
        $this->initCompteForm->setAttribute('action', $this->url()->fromRoute('utilisateur/init-compte', ['token' => $token], true));
        $this->initCompteForm->bind((new Utilisateur())->setUsername($username));

        /** @var Request $request */
        $request = $this->getRequest();
+3 −3
Changes for module/Application/src/Application/Entity/Db/Repository/UtilisateurRepository.php: 3 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -63,10 +63,9 @@ class UtilisateurRepository extends DefaultEntityRepository
    }

    /**
     * @param string $token
     * @return Utilisateur
     * Recherche un utilisateur par le token permettant de changer de mot de passe.
     */
    public function findByToken($token)
    public function findByToken(string $token): ?Utilisateur
    {
        $qb = $this->createQueryBuilder('u')
            ->andWhere('u.passwordResetToken = :token')
@@ -77,6 +76,7 @@ class UtilisateurRepository extends DefaultEntityRepository
        } catch (NonUniqueResultException $e) {
            throw new RuntimeException("Plusieurs Utilisateur partagent le même token [".$token."]", 0 , $e);
        }

        return $result;
    }
}
 No newline at end of file
+1 −0
Changes for module/Application/src/Application/Entity/Db/Utilisateur.php: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ class Utilisateur extends AbstractUser implements UserInterface, ProviderInterfa

    private ?string $nom = null;
    private ?string $prenom = null;
    protected $state = 1;

    /**
     * @var Individu
Loading