Commit e630e539 authored by David Surville's avatar David Surville
Browse files

Intégration de la synchronisation d'un utilisateur avec une source déclarée...

Intégration de la synchronisation d'un utilisateur avec une source déclarée dans la clé `recherche-individu`
parent e825f4b5
Loading
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ return [
                        'supprimer',
                        'ajouter',
                        'modifier',
                        'synchroniser',
                    ],
                    'privileges' => [
                        UtilisateurPrivileges::UTILISATEUR_AJOUTER,
@@ -81,7 +82,6 @@ return [
                    'controller' => UtilisateurController::class,
                    'action' => [
                        'changer-statut',
                        'refresh',
                    ],
                    'privileges' => [
                        UtilisateurPrivileges::UTILISATEUR_CHANGERSTATUS,
@@ -357,13 +357,16 @@ return [
                            ],
                        ],
                    ],
                    'refresh' => [
                    'synchroniser' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/refresh/:utilisateur',
                            'route'       => '/synchroniser/:utilisateur',
                            'defaults'    => [
                                /** @see UtilisateurController::refreshAction() */
                                'action' => 'refresh',
                                'controller' => UtilisateurController::class,
                                'action' => 'synchroniser',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    ],
+20 −13
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ class UtilisateurController extends AbstractActionController
        return $this;
    }

    public function indexAction(): ViewModel|Response
    public function indexAction()
    {
        $roles = $this->roleService->findAll();
        $userRechercheForm = $this->userRechercheForm;
@@ -585,25 +585,32 @@ class UtilisateurController extends AbstractActionController
    public function flashMessageAction()
    {}

    public function refreshAction(): ViewModel
    public function synchroniserAction(): ViewModel
    {
        $id = $this->params()->fromRoute('utilisateur');
        $user = $this->userService->find($id);
        $fromLdap = $this->searchServices['ldap']->findById($user->getUsername($this->usernamefield));
        $fromSrc = null;

        $request = $this->getRequest();
        if ($request->isPost()) {
            $user->setUsername($fromLdap->getUsername($this->usernamefield));
            $user->setDisplayName($fromLdap->getDisplayName());
            $user->setEmail($fromLdap->getEmail());
        $sources = array_values(array_filter(array_keys($this->searchServices), function ($k) { return $k != 'app'; }));
        $src = !empty($sources) ? $sources[0] : null;

        if($src) {
            $fromSrc = $this->searchServices[$src]->findById($user->getUsername());

            if ($data = $this->params()->fromPost()) {
                $user->setUsername($fromSrc->getUsername());
                $user->setDisplayName($fromSrc->getDisplayName());
                $user->setEmail($fromSrc->getEmail());
                $this->userService->update($user);
            exit();
                exit;
            }
        }

        return new ViewModel([
            'title' => "Rafraichissement des données de l'utilisateur",
            'title' => sprintf("Synchroniser l'utilisateur %s", $src ? "avec la source \"$src\"" : ''),
            'user' => $user,
            'fromLdap' => $fromLdap,
            'fromLdap' => $fromSrc,
            'src' => $src,
        ]);
    }
}
 No newline at end of file
+0 −0

File mode changed from 100755 to 100644.

+4 −4
Original line number Diff line number Diff line
@@ -125,9 +125,9 @@ $canModifier = $canAjouter;
        </table>

        <?php /** @see UtilisateurController::refreshAction() */ ?>
        <a href='<?php echo $this->url('unicaen-utilisateur/refresh', ['utilisateur' => $utilisateur->getId()], [], true); ?>'
           class='btn btn-primary pull-right ajax-modal' data-event="event-unicaen-utilisateur-update">
            <span class="icon icon-refresh"></span>
        <a href='<?php echo $this->url('unicaen-utilisateur/synchroniser', ['utilisateur' => $utilisateur->getId()], [], true); ?>'
           class='btn btn-primary ajax-modal' data-event="event-unicaen-utilisateur-synchroniser">
            <i class="fas fa-sync-alt" title="Synchroniser les données de l'utilisateur"></i>
            Mettre à jour
        </a>

@@ -466,7 +466,7 @@ $canModifier = $canAjouter;
    $(function() {
        $('body')
            .one("event-unicaen-utilisateur-editer " +
                 "event-unicaen-utilisateur-ldap-synchroniser", function (event) {
                 "event-unicaen-utilisateur-synchroniser", function (event) {
                event.div.modal('hide');
                window.location.reload();
            })
+23 −4
Original line number Diff line number Diff line
@@ -2,14 +2,25 @@

use UnicaenUtilisateur\Entity\Db\User;use UnicaenUtilisateur\Service\RechercheIndividu\RechercheIndividuResultatInterface;

/** @see UtilisateurController::refreshAction()
/**
 * @var User $user
 * @var RechercheIndividuResultatInterface $fromLdap
 * @var ?string $src
 *
 * */
 * @see UtilisateurController::synchroniserAction()
 */

?>

<?php if(!$src): ?>

    <div class="alert alert-danger" role="alert">
        <h4 class="alert-heading">Synchronisation impossible !</h4>
        <p>Aucune source autre que locale, n'est définie pour la recherche d'individus (clé "recherche-individu") dans la configuration du module <strong>unicaen/utilisateur</strong>.</p>
    </div>

<?php else: ?>

<table class="table table-condensed">
    <thead>
    <tr>
@@ -37,8 +48,16 @@ use UnicaenUtilisateur\Entity\Db\User;use UnicaenUtilisateur\Service\RechercheIn
    </tbody>
</table>

<form action="<?php echo $this->url('unicaen-utilisateur/refresh', ['utilisateur' => $user->getId()]); ?>" method="post">
<form action="<?php echo $this->url('unicaen-utilisateur/synchroniser', ['utilisateur' => $user->getId()]); ?>" method="post">
    <button class="btn btn-success">
        <span class="icon icon-refresh">Mettre à jour avec les données du système d'information</span>
        <i class="fas fa-sync-alt" title="Synchroniser les données de l'utilisateur"></i> Mettre à jour
    </button>
</form>

<?php endif; ?>

<script type="text/javascript">
    $(function () {
        $('.modal-dialog').addClass('modal-lg');
    });
</script>