Commit 056b6fe8 authored by David Surville's avatar David Surville
Browse files

Interface de gestion des rôles et périmètres de l'utilisateur (wip)

parent 9004ddea
Loading
Loading
Loading
Loading
+11 −0
Changes for config/merged/role.config.php: 11 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -77,6 +77,9 @@ return [
                                'controller' => RoleController::class,
                                'action' => 'exporter',
                            ],
                            'constraints' => [
                                'role' => '\d+',
                            ],
                        ],
                    ],
                    'ajouter' => [
@@ -97,6 +100,9 @@ return [
                                'controller' => RoleController::class,
                                'action' => 'modifier',
                            ],
                            'constraints' => [
                                'role' => '\d+',
                            ],
                        ],
                    ],
                    'supprimer' => [
@@ -107,6 +113,9 @@ return [
                                'controller' => RoleController::class,
                                'action' => 'supprimer',
                            ],
                            'constraints' => [
                                'role' => '\d+',
                            ],
                        ],
                    ],
                ],
@@ -122,11 +131,13 @@ return [
            RoleService::class => RoleServiceFactory::class,
        ],
    ],

    'controllers'     => [
        'factories' => [
            RoleController::class => RoleControllerFactory::class,
        ],
    ],

    'form_elements' => [
        'factories' => [
            RoleForm::class => RoleFormFactory::class,
+29 −4
Changes for config/merged/utilisateur.config.php: 29 added lines, 4 removed lines.
Original line number Diff line number Diff line
<?php

use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenUtilisateur\Controller\UtilisateurController;
use UnicaenUtilisateur\Controller\UtilisateurControllerFactory;
use UnicaenUtilisateur\Form\User\UserForm;
@@ -12,7 +13,8 @@ use UnicaenUtilisateur\Service\Role\RoleService;
use UnicaenUtilisateur\Service\Role\RoleServiceFactory;
use UnicaenUtilisateur\Service\User\UserService;
use UnicaenUtilisateur\Service\User\UserServiceFactory;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenUtilisateur\View\Helper\UserRole;
use UnicaenUtilisateur\View\Helper\UserRoleFactory;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;

@@ -137,6 +139,10 @@ return [
                                'controller' => UtilisateurController::class,
                                'action' => 'add-role',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                                'role' => '\d+',
                            ],
                        ],
                    ],
                    'remove-role' => [
@@ -147,6 +153,10 @@ return [
                                'controller' => UtilisateurController::class,
                                'action' => 'remove-role',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                                'role' => '\d+',
                            ],
                        ],
                    ],
                    'changer-statut' => [
@@ -157,6 +167,9 @@ return [
                                'controller' => UtilisateurController::class,
                                'action' => 'changer-statut',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    ],
                    'supprimer' => [
@@ -167,6 +180,9 @@ return [
                                'controller' => UtilisateurController::class,
                                'action' => 'supprimer',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    ],
                ],
@@ -181,6 +197,12 @@ return [
        ],
    ],

    'controllers'     => [
        'factories' => [
            UtilisateurController::class => UtilisateurControllerFactory::class,
        ]
    ],

    'form_elements' => [
        'invokables' => [
            UserRechercheForm::class => UserRechercheForm::class,
@@ -190,9 +212,12 @@ return [
        ],
    ],

    'controllers'     => [
    'view_helpers' => [
        'aliases' => [
            'userRole' => UserRole::class,
        ],
        'factories' => [
            UtilisateurController::class => UtilisateurControllerFactory::class,
        ]
            UserRole::class => UserRoleFactory::class,
        ],
    ],
];
+4 −5
Changes for src/UnicaenUtilisateur/Controller/UtilisateurController.php: 4 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -95,7 +95,6 @@ class UtilisateurController extends AbstractActionController
                        }
                        else {
                            $this->flashMessenger()->addErrorMessage("La source \"$source\" n'est pas déclarée dans la configuration.");

                            return $this->redirect()->toRoute('utilisateur', [], [], true);
                        }
                }
@@ -104,13 +103,13 @@ class UtilisateurController extends AbstractActionController

        $utilisateurId = $this->params()->fromQuery("id");
        $utilisateur = null;
        $rolesAttributes = [];
        $rolesAttribues = [];
        $rolesDisponibles = [];
        if ($utilisateurId !== null AND $utilisateurId !== "") {
            $utilisateur = $this->userService->find($utilisateurId);
            if($utilisateur instanceof UserInterface) {
                $rolesAttributes = $utilisateur->getRoles()->toArray();
                $rolesDisponibles = array_diff($roles, $rolesAttributes);
                $rolesAttribues = $utilisateur->getRoles()->toArray();
                $rolesDisponibles = array_diff($roles, $rolesAttribues);
            }
        }

@@ -120,7 +119,7 @@ class UtilisateurController extends AbstractActionController
            'form' => $form,
            'utilisateur' => $utilisateur,
            'roles' => $roles,
            'rolesAttributes' => $rolesAttributes,
            'rolesAttribues' => $rolesAttribues,
            'rolesDisponibles' => $rolesDisponibles,
            'rolesAutomatiques' => ($this->identityProvider !== null) ? $this->identityProvider->computeRolesAutomatiques($utilisateur) : [],
        ]);
+18 −0
Changes for src/UnicaenUtilisateur/Entity/Db/AbstractUser.php: 18 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -266,6 +266,24 @@ abstract class AbstractUser implements UserInterface, ProviderInterface, Recherc
        return $this->roles;
    }

    /**
     * @param RoleInterface $role
     * @return UserRoleInterface|null
     */
    public function getFullRole(RoleInterface $role)
    {
        if(!$this->hasRole($role)) {
            return null;
        }

        $roles = $this->roles->filter(function ($r) use ($role) {
            /** @var UserRoleInterface $r */
            return $r->getRole()->getRoleId() === $role->getRoleId();
        });

        return $roles->current();
    }

    /**
     * Get roles of user
     *
+2 −1
Changes for src/UnicaenUtilisateur/Entity/Db/Mapping/UnicaenUtilisateur.Entity.Db.Role.dcm.xml: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -13,7 +13,8 @@
        </unique-constraints>

        <id name="id" type="integer" column="ID">
            <generator strategy="IDENTITY"/>
            <generator strategy="AUTO"/>
            <sequence-generator sequence-name="UNICAEN_ROLE_ID_seq" allocation-size="1" initial-value="1"/>
        </id>

        <field name="roleId" type="string" column="ROLE_ID" length="64" nullable="false"/>
Loading