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

Meilleure gestion de l'identity provider

parent bd1f8f0f
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace UnicaenUtilisateur\Controller;

use BjyAuthorize\Provider\Identity\ProviderInterface;
use DateTime;
use UnicaenApp\View\Model\CsvModel;
use UnicaenUtilisateur\Entity\Db\Role;
@@ -16,6 +17,14 @@ class RoleController extends AbstractActionController {
    use RoleServiceAwareTrait;
    use RoleFormAwareTrait;

    /** @var ProviderInterface */
    private $identityProvider;

    public function setIdentityProvider($provider)
    {
        $this->identityProvider = $provider;
    }

    public function indexAction()
    {
        /** @var Role[] $roles */
@@ -23,15 +32,27 @@ class RoleController extends AbstractActionController {

        return new ViewModel([
            'roles' => $roles,
            'identityprovider' => $this->identityProvider,
        ]);
    }

    public function listingAction()
    {
        $role = $this->getRoleService()->getRequestedRole($this);

        /** @var User[] $users */
        $users = [];
        if (!$role->isAuto()) {
            $users = $role->getUsers()->toArray();
        usort($users, function (User $a, User $b) { return $a->getDisplayName() > $b->getDisplayName();});
            usort($users, function (User $a, User $b) {
                return $a->getDisplayName() > $b->getDisplayName();
            });
        } else {
            if ($this->identityProvider !== null) {
                $users = $this->identityProvider->computeUsersAutomatiques($role->getRoleId());
            }
        }


        $headers = [ 'Nom d\'utilisateur', 'Nom affiché', 'Adresse électronique'];

+9 −0
Original line number Diff line number Diff line
@@ -20,8 +20,17 @@ class RoleControllerFactory {
         */
        $roleForm = $container->get('FormElementManager')->get(RoleForm::class);

        $identityProvider = null;
        if ($container->get('Config')['unicaen-utilisateur']['identity-provider'] !== "") {
            if (isset($container->get('Config')['unicaen-utilisateur']['identity-provider'])) {
                $identityProviderPath = $container->get('Config')['unicaen-utilisateur']['identity-provider'];
                $identityProvider = $container->get($identityProviderPath);
            }
        }

        /** @var RoleController $controller */
        $controller = new RoleController();
        $controller->setIdentityProvider($identityProvider);
        $controller->setRoleService($roleService);
        $controller->setRoleForm($roleForm);
        return $controller;
+2 −2
Original line number Diff line number Diff line
@@ -47,8 +47,8 @@ class RoleHydrator implements HydratorInterface {
        }
        $object->setParent($parent);

        $default = (isset($data['is_default']) AND $data['is_default'] === true)?true:false;
        $auto    = (isset($data['is_auto'])  AND $data['is_auto'] === true)?true:false;
        $default = (isset($data['is_default']) AND $data['is_default'] === "true")?true:false;
        $auto    = (isset($data['is_auto'])  AND $data['is_auto'] === "true")?true:false;

        $object->setIsDefault($default);
        $object->setAuto($auto);
+12 −1
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ use UnicaenUtilisateur\Provider\Privilege\RolePrivileges;
/**
 * @see UnicaenUtilisateur\Controller\RoleController::indexAction()
 * @var Role[] $roles
 * @var $identityprovider
 */

$canAfficher    = $this->isAllowed(RolePrivileges::getResourceId(RolePrivileges::ROLE_AFFICHER));
@@ -54,7 +55,17 @@ $canEffacer = $this->isAllowed(RolePrivileges::getResourceId(RolePrivileges:
                    <td> <?php echo $role->getLibelle(); ?></td>
                    <td>
                        <?php if ($role->isAuto()) : ?>
                            <span class="icon synchroniser"></span> Octopus
                            <?php if ($identityprovider !== null) : ?>
                                <?php
                                    $result = $identityprovider->computeUsersAutomatiques($role->getRoleId());
                                    if ($result !== null) {
                                        echo count($result);
                                    } else {
                                        echo '<span data-toggle="tooltip" data-html="true" title="Aucune méthode de calcul pour ['.$role->getRoleId().']">??</span>';
                                    }
                                ?>
                            <?php endif; ?>
                            <span class="icon synchroniser" data-toggle="tooltip" data-html="true" title="Rôle automatique"></span>
                        <?php else: ?>
                            <span title="<?php echo implode("\n",$listing); ?>"><?php echo $nbUser; ?> <i class="fas fa-user"></i></span> </td>
                        <?php endif; ?>