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

Première interface de liaison entre les utilisateurs (non liés) et un individu

parent 2350c5fc
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ return [
                        'ajouter-role',
                        'ajouter',
                        'ajouterFromIndividu',
                        'lier-individu',
                    ],
                    'privileges' => UtilisateurPrivileges::UTILISATEUR_MODIFICATION,
                ],
@@ -125,6 +126,15 @@ return [
                            ],
                        ],
                    ],
                    'lier-individu' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/lier-individu/:utilisateur',
                            'defaults'    => [
                                'action' => 'lier-individu',
                            ],
                        ],
                    ],
                    'creer-compte-local-individu' => [
                        'type'          => Segment::class,
                        'options'       => [
+22 −6
Original line number Diff line number Diff line
@@ -9,9 +9,7 @@ use Application\Form\CreationUtilisateurForm;
use Application\Form\InitCompteForm;
use Application\Form\InitCompteFormAwareTrait;
use Application\Search\Controller\SearchControllerInterface;
use Application\Search\Controller\SearchControllerPlugin;
use Application\Search\Controller\SearchControllerTrait;
use Application\Search\SearchServiceAwareTrait;
use Application\Service\Acteur\ActeurServiceAwareTrait;
use Application\Service\EcoleDoctorale\EcoleDoctoraleServiceAwareTrait;
use Application\Service\Etablissement\EtablissementServiceAwareTrait;
@@ -21,19 +19,15 @@ use Application\Service\Role\RoleServiceAwareTrait;
use Application\Service\Structure\StructureServiceAwareTrait;
use Application\Service\UniteRecherche\UniteRechercheServiceAwareTrait;
use Application\Service\UserContextServiceAwareTrait;
use Application\Service\Utilisateur\UtilisateurService;
use Application\Service\Utilisateur\UtilisateurServiceAwareTrait;
use Application\SourceCodeStringHelperAwareTrait;
use Doctrine\ORM\Query\Expr;
use UnicaenApp\Exception\LogicException;
use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenAuth\Entity\Db\AbstractUser;
use UnicaenAuth\Entity\Shibboleth\ShibUser;
use UnicaenAuth\Options\ModuleOptions;
use UnicaenAuth\Service\ShibService;
use UnicaenAuth\Service\Traits\UserServiceAwareTrait;
use UnicaenLdap\Entity\People;
use Zend\Authentication\AuthenticationService;
use Zend\Http\Request;
use Zend\Http\Response;
@@ -422,4 +416,26 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
        ]);
    }

    public function lierIndividuAction()
    {
        $utilisateur = $this->getUtilisateurService()->getRequestedUtilisateur($this);

        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $individuId = $data['individu']['id'];
            /** @var Individu $individu */
            $individu = $this->getIndividuService()->getRepository()->find($individuId);
            $utilisateur->setIndividu($individu);
            $this->getUtilisateurService()->getEntityManager()->flush($utilisateur);
        }

        $vm = new ViewModel([
            'title' => "Création de lien entre un individu et l'utilisateur ".$utilisateur->getDisplayName() . " [".$utilisateur->getId()."]",
            'utilisateur' => $utilisateur,
        ]);
        return $vm;

    }

}
 No newline at end of file
+14 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ use UnicaenApp\Exception\RuntimeException;
use UnicaenAuth\Service\Traits\UserServiceAwareTrait;
use UnicaenLdap\Entity\People;
use Zend\Crypt\Password\Bcrypt;
use Zend\Mvc\Controller\AbstractActionController;

class UtilisateurService extends BaseService
{
@@ -254,4 +255,17 @@ class UtilisateurService extends BaseService

        return $utilisateur;
    }

    /**
     * @param AbstractActionController $controller
     * @param string $param
     * @return Utilisateur|null
     */
    public function getRequestedUtilisateur(AbstractActionController $controller, string $param = "utilisateur") : ?Utilisateur
    {
        $id = $controller->params()->fromRoute($param);
        /** @var Utilisateur $result */
        $result = $this->getRepository()->find($id);
        return $result;
    }
}
 No newline at end of file
+9 −1
Original line number Diff line number Diff line
@@ -61,7 +61,15 @@ use Zend\Paginator\Paginator;
                <td><?php echo Util::truncatedString($utilisateur->getPassword(), 10); ?></td>
                <td>
                    <?php if ($individu = $utilisateur->getIndividu()): ?>

                        <?php if ($individu->estHistorise()) : ?>
                            <span class="historise">
                            <?php echo $individu->getNomComplet(); ?>
                            (<?php echo $individu->getId(); ?>)
                            </span>
                        <?php else: ?>
                            <?php echo $individu->getNomComplet(); ?>
                            (<?php echo $individu->getId(); ?>)
                        <?php endif ?>
                    <?php endif ?>
                </td>
            </tr>
+50 −0
Original line number Diff line number Diff line
<?php

/**
 * @see \Application\Controller\UtilisateurController::lierIndividuAction();
 * @var Utilisateur $utilisateur
 */

use UnicaenApp\Util;
use Application\Entity\Db\Utilisateur;
use UnicaenApp\Form\Element\SearchAndSelect;

?>

<div class="box panel panel-info">
    <div class="panel-heading">
        <h2 class="first">
            <?php echo $this->translate("Utilisateur") ?>
        </h2>
    </div>
    <div class="panel-body">
        <dl class="dl-horizontal">
            <dt>Id</dt>
            <dd><?php echo $utilisateur->getId() ?></dd>
            <dt>Username</dt>
            <dd><code><?php echo $utilisateur->getUsername() ?></code></dd>
            <dt>Email</dt>
            <dd><?php echo $utilisateur->getEmail() ?></dd>
            <dt>Display name</dt>
            <dd><?php echo $utilisateur->getDisplayName() ?></dd>
            <dt>Password</dt>
            <dd><?php echo Util::truncatedString($utilisateur->getPassword(), 10) ?></dd>
            <?php if ($token = $utilisateur->getPasswordResetToken()): ?>
                <dt>Password reset token</dt>
                <dd><?php echo Util::truncatedString($token, 8) ?></dd>
            <?php endif ?>
        </dl>
    </div>
</div>

<form method="post" action="<?php echo $this->url('utilisateur/lier-individu', ['utilisateur' => $utilisateur->getId()], [], true); ?>">
    <?php
    $sas = new SearchAndSelect('individu');
    $sas->setLabel($this->translate("Recherche d'un individu"));
    $sas->setAttribute('class', 'individu-finder');
    $sas->setAutocompleteSource($this->url('utilisateur/rechercher-individu', [], [], true));
    echo $this->formControlGroup($sas, 'formSearchAndSelect');
    ?>

    <input type="submit" class="btn btn-primary action" value="Lier l'individu à l'utilisateur">
</form>
Loading