Commit 0105e140 authored by Thomas Hamel's avatar Thomas Hamel
Browse files

[FIX] Exceptions mieux gérées sur certaines pages relatives à la soutenance...

[FIX] Exceptions mieux gérées sur certaines pages relatives à la soutenance lorsque la proposition n'est pas encore initialisée
parent 24710391
Loading
Loading
Loading
Loading
+7 −0
Changes for module/Soutenance/src/Soutenance/Controller/HDR/Presoutenance/PresoutenanceHDRController.php: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -60,6 +60,13 @@ class PresoutenanceHDRController extends PresoutenanceController
    {
        $this->initializeFromType();

        if ($this->proposition === null) {
            $vm = new ViewModel();
            $vm->setTemplate('soutenance/error/403');
            $vm->setVariables(['message' => "Aucune proposition de soutenance n'a encore été créée. Veuillez-vous rendre dans un premier temps, sur l'onglet Proposition de soutenance."]);
            return $vm;
        }

        /** @var Membre[] $membres */
        $membres = $this->proposition->getMembres()->toArray();
        $acteursMembres = $this->acteurService->getRepository()->findActeursForSoutenanceMembres($membres);
+7 −0
Changes for module/Soutenance/src/Soutenance/Controller/InterventionController.php: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -40,6 +40,13 @@ class InterventionController extends AbstractSoutenanceController
    {
        $this->initializeFromType(false, false, false);

        if ($this->proposition === null) {
            $vm = new ViewModel();
            $vm->setTemplate('soutenance/error/403');
            $vm->setVariables(['message' => "Aucune proposition de soutenance n'a encore été créée. Veuillez-vous rendre dans un premier temps, sur l'onglet Proposition de soutenance."]);
            return $vm;
        }

        $justificatifs = $this->getJustificatifService()->generateListeJustificatif($this->proposition, true);
        $distanciels = $this->getInterventionService()->getInterventionByPropositionType($this->proposition, Intervention::TYPE_DISTANCIEL);
        $visios = $this->getInterventionService()->getInterventionByPropositionType($this->proposition, Intervention::TYPE_VISIO_TARDIVE);
+9 −5
Changes for module/Soutenance/src/Soutenance/Controller/PropositionController.php: 9 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -722,21 +722,25 @@ abstract class PropositionController extends AbstractSoutenanceController
    /** Error *********************************************************************************************************/

    /**
     * @param Proposition $proposition
     * @param array $privilieges
     * @param ?Proposition $proposition
     * @param array $privileges
     * @param string|null $message
     * @return ViewModel|null
     */
    protected function verifierAutorisation(Proposition $proposition, array $privilieges, ?string $message = null): ?ViewModel
    protected function verifierAutorisation(?Proposition $proposition, array $privileges, ?string $message = null): ?ViewModel
    {
        $authorized = false;

        if($this->proposition){
            $propositionAssertion = $proposition->getObject() instanceof These ?
                $this->getPropositionTheseAssertion() :
                $this->getPropositionHDRAssertion();
        foreach ($privilieges as $priviliege) {
            $authorized = $propositionAssertion->computeValeur(null, $proposition, $priviliege);
            foreach ($privileges as $privilege) {
                $authorized = $propositionAssertion->computeValeur(null, $proposition, $privilege);
                if ($authorized === true) break;
            }
        }

        if ($authorized === false) {
            $vm = new ViewModel();
            $vm->setTemplate('soutenance/error/403');
+24 −12
Changes for module/Soutenance/view/soutenance/intervention/afficher.phtml: 24 added lines, 12 removed lines.
Original line number Diff line number Diff line
@@ -60,17 +60,6 @@ $canModifier = $this->isAllowed($object, InterventionPrivileges::INTERVENTION_MO
    </div>
<?php else : ?>

    <?php /** LIEN VERS LE FORMULAIRE DOC **************************************************************/ ?>
    <div class="alert alert-info">
        <span class="icon icon-info"></span>
        Vous pouvez télécharger les formulaires de délégation grâce au lien suivant :
        <strong><u>
                <a href="<?php echo $FORMULAIRE_DELEGUATION; ?>">
                    formulaire de demande de délégation
                </a>
            </u></strong>.
    </div>

    <?php
    $classe_distanciel = 'bg-warning';
    if ($distanciel !== null) {
@@ -94,6 +83,20 @@ $canModifier = $this->isAllowed($object, InterventionPrivileges::INTERVENTION_MO

                <?php /** DECLARATION ******************************************************************/ ?>
                <div class="row">
                    <div class="col-md-12">
                        <?php /** LIEN VERS LE FORMULAIRE DOC **************************************************************/ ?>
                        <div class="alert alert-info">
                            <span class="icon icon-info"></span>
                            Vous pouvez télécharger le formulaire de délégation grâce au lien suivant :
                            <strong>
                                <u>
                                    <a href="<?php echo $FORMULAIRE_DELEGUATION; ?>">
                                        formulaire de demande de délégation
                                    </a>
                                </u>
                            </strong>.
                        </div>
                    </div>
                    <div class="col-md-8">
                        Déclaration que le président du jury sera en distanciel
                        faite le <?php echo $distanciel->getHistoCreation()->format('d/m/Y'); ?>
@@ -154,7 +157,16 @@ $canModifier = $this->isAllowed($object, InterventionPrivileges::INTERVENTION_MO
                </div>

                <div class="alert alert-warning">
                    <span class="fas fa-exclamation-triangle"></span> Si le président du jury est en distanciel, tous les membres du jury devront remplir une délégation de signature.
                    <span class="fas fa-exclamation-triangle"></span>
                    Si le président du jury est en distanciel, tous les membres du jury devront remplir une délégation de signature,
                    téléchargeable grâce au
                    <strong>
                        <u>
                            <a href="<?php echo $FORMULAIRE_DELEGUATION; ?>">
                                lien suivant.
                            </a>
                        </u>
                    </strong>
                </div>
            <?php endif; ?>
        </div>