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

Merge branch 'release/8.0-perimetres'

parents 6517364c 823612a7
Loading
Loading
Loading
Loading
Loading
+0 −28
Original line number Diff line number Diff line
stages:
  - tests
  - release
  - publish

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
  - vendor/

#unit-tests:
#  stage: tests
#  script:
#    - composer install --no-interaction --no-suggest --no-progress
#    - php vendor/bin/phpunit --coverage-text=coverage.txt --colors=never
#  artifacts:
#    paths:
#      - coverage.txt

update-satis:
  stage: publish
  image: python:3.9
  script:
    - apt-get update && apt-get -y upgrade && apt-get -y install curl
    - curl https://gest.unicaen.fr/packagist/update

release_job:
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  rules:
    - if: $CI_COMMIT_TAG  # Run this job when a tag is created manually
  script: echo "Creation de la release $CI_COMMIT_TAG..."
  release:
    name: '$CI_COMMIT_TAG'
    tag_name: '$CI_COMMIT_TAG'
    ref: '$CI_COMMIT_TAG'
    description: 'Cf. [CHANGELOG](CHANGELOG.md) et [Release notes](doc/release-notes/v$CI_COMMIT_TAG.md)'
+15 −17
Original line number Diff line number Diff line
Journal des modifications
=========================

8.0.0 (02/12/2025)
------------------

- Intégration des périmètres
- Revue des pages de gestion des utilisateurs et des rôles
- Refonte de la gestion des comptes locaux

7.0.3 (31/03/2025)
------------------
- Liste des utilisateurs : ajouts du mails
@@ -12,22 +19,25 @@ Journal des modifications
- Dépendance ZfcUser explicite
- Remplacement de Laminas\Crypt\Password\Bcrypt par ZfcUser\Password\Bcrypt


7.0.1
-----

- [FIX] HistoriqueAwareTrait : méthodes getDateTime() et getDate() pas cohérentes avec getHistoCreation().

7.0.0
-----

- [Fix] Correction du problème de UserServiceFactory faisant appel à une méthode inconnue "setUsernameField" dans UserService
- Utilisation de la nouvelle version de unicaen/mail (symfony)

6.3.1
-----

- [FIX] HistoriqueAwareTrait : méthodes getDateTime() et getDate() pas cohérentes avec getHistoCreation().

6.3.0
-----

- Rattrapage des évolutions dans unicaen/auth : aides de vues User*
- Correction du .gitlab-ci.yml : l'utilisation d'une image python suffit pour la màj satis
- [FIX] HistoriqueListener : prise en compte nécessaire du paramètre de config 'user_entity_class'.
@@ -35,32 +45,20 @@ Journal des modifications

6.0.4 (21/03/2023)
-----

- Ajout du paramètre [display-user-info](config/unicaen-utilisateur.global.php.dist) qui permet d'afficher ou nonles affectations LDAP de l'utilisateur courant
- [Fix] Test de présence de 'userUsurpation' pour couplage faible avec UnicaenAuthentification

5.0.8
------

* Correction du formulaire des rôles (la decsription n'est plus obligatoire)
* Création d'une classe abstraite AbstractIdentityProvider pour somplifire la déclaration des IdentityProviders
* Ajout de garde à l'appel des fonctions de gestion des rôles automatiques 

5.0.7 
------

* Ajout du champs description pour les rôles
* Ajout d'un view helper pour l'affichage des rôles ```echo $this->role($role)```
* Début de nettoyage des classes vers la syntaxe PHP8
 No newline at end of file


0.0.2 (29/03/2021)
-----
- [Fix] Correction exception incomplete dans UserService

0.0.1 (12/03/2021)
-----

Version initiale du module permettant :
- la gestion des utilisateurs
- la gestion des rôles
- l'affectation de rôles à des utilisateurs
- l'export des utilisateurs
- les exports des utilisateurs ayant un rôle donné 
+2 −2
Original line number Diff line number Diff line
{
    "name": "unicaen/utilisateur",
    "description": "Module reprenant la gestion des utilisateurs, privileges et roles - Version laminas",
    "description": "Module reprenant la gestion des utilisateurs, privileges et roles",
    "repositories": [
        {
            "type": "composer",
@@ -9,7 +9,7 @@
    ],
    "require": {
        "unicaen/app": "^7.0",
        "unicaen/mail": "^7.0",
        "unicaen/mail": "^7.0|dev-release/8.0-perimetres",
        "unicaen/zfc-user": "^6.1"
    },
    "require-dev": {
+21 −8
Original line number Diff line number Diff line
<?php

use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenUtilisateur\Controller\RoleController;
use UnicaenUtilisateur\Controller\RoleControllerFactory;
use UnicaenUtilisateur\Form\Role\RoleForm;
use UnicaenUtilisateur\Form\Role\RoleFormFactory;
use UnicaenUtilisateur\Form\Role\RoleHydrator;
use UnicaenUtilisateur\Form\Role\RoleHydratorFactory;
use UnicaenUtilisateur\Service\Role\RoleService;
use UnicaenUtilisateur\Service\Role\RoleServiceFactory;
use UnicaenUtilisateur\Provider\Privilege\RolePrivileges;
use UnicaenUtilisateur\Provider\Role\Config;
use UnicaenUtilisateur\Provider\Role\ConfigServiceFactory;
@@ -15,9 +16,9 @@ use UnicaenUtilisateur\Provider\Role\DbRole;
use UnicaenUtilisateur\Provider\Role\DbRoleServiceFactory;
use UnicaenUtilisateur\Provider\Role\Username;
use UnicaenUtilisateur\Provider\Role\UsernameServiceFactory;
use UnicaenPrivilege\Guard\PrivilegeController;
use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
use UnicaenUtilisateur\Service\Role\RoleService;
use UnicaenUtilisateur\Service\Role\RoleServiceFactory;
use UnicaenUtilisateur\View\Helper\RoleViewHelper;

return [
    'bjyauthorize' => [
@@ -77,6 +78,9 @@ return [
                                'controller' => RoleController::class,
                                'action' => 'exporter',
                            ],
                            'constraints' => [
                                'role' => '\d+',
                            ],
                        ],
                    ],
                    'ajouter' => [
@@ -97,6 +101,9 @@ return [
                                'controller' => RoleController::class,
                                'action' => 'modifier',
                            ],
                            'constraints' => [
                                'role' => '\d+',
                            ],
                        ],
                    ],
                    'supprimer' => [
@@ -107,6 +114,9 @@ return [
                                'controller' => RoleController::class,
                                'action' => 'supprimer',
                            ],
                            'constraints' => [
                                'role' => '\d+',
                            ],
                        ],
                    ],
                ],
@@ -122,19 +132,22 @@ return [
            RoleService::class => RoleServiceFactory::class,
        ],
    ],

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

    'form_elements' => [
        'factories' => [
            RoleForm::class => RoleFormFactory::class,
        ],
    ],
    'hydrators' => [
        'factories' => [
            RoleHydrator::class => RoleHydratorFactory::class,

    'view_helpers'  => [
        'invokables' => [
            'role' => RoleViewHelper::class,
        ],
    ],
];
+223 −52
Original line number Diff line number Diff line
<?php

use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenUtilisateur\Controller\UtilisateurController;
use UnicaenUtilisateur\Controller\UtilisateurControllerFactory;
use UnicaenUtilisateur\Form\SelectionUtilisateur\SelectionUtilisateurForm;
use UnicaenUtilisateur\Form\SelectionUtilisateur\SelectionUtilisateurFormFactory;
use UnicaenUtilisateur\Form\SelectionUtilisateur\SelectionUtilisateurHydrator;
use UnicaenUtilisateur\Form\SelectionUtilisateur\SelectionUtilisateurHydratorFactory;
use UnicaenUtilisateur\Form\User\InitCompteForm;
use UnicaenUtilisateur\Form\User\PasswordEnregistrementForm;
use UnicaenUtilisateur\Form\User\PasswordRecuperationForm;
use UnicaenUtilisateur\Form\User\PasswordRecuperationFormFactory;
use UnicaenUtilisateur\Form\User\UserForm;
use UnicaenUtilisateur\Form\User\UserFormFactory;
use UnicaenUtilisateur\Form\User\UserHydrator;
use UnicaenUtilisateur\Form\User\UserHydratorFactory;
use UnicaenUtilisateur\Form\User\UserRechercheForm;
use UnicaenUtilisateur\Form\User\UserRoleForm;
use UnicaenUtilisateur\Form\User\UserRoleFormFactory;
use UnicaenUtilisateur\Provider\Privilege\UtilisateurPrivileges;
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 Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
use UnicaenUtilisateur\View\Helper\UserRole;
use UnicaenUtilisateur\View\Helper\UserRoleFactory;

return [

@@ -45,9 +51,8 @@ return [
                [
                    'controller' => UtilisateurController::class,
                    'action' => [
                        'changer-mot-de-passe',
                    ],
                    'roles' => [
                        'enregistrer-mot-de-passe',
                        'recuperer-mot-de-passe',
                    ],
                ],
                [
@@ -66,6 +71,8 @@ return [
                    'action' => [
                        'supprimer',
                        'ajouter',
                        'modifier',
                        'synchroniser',
                    ],
                    'privileges' => [
                        UtilisateurPrivileges::UTILISATEUR_AJOUTER,
@@ -84,8 +91,15 @@ return [
                [
                    'controller' => UtilisateurController::class,
                    'action' => [
                        'add-role',
                        'remove-role',
                        'ajouter-perimetre',
                        'ajouter-role',
                        'lister-perimetre',
                        'lister-role',
                        'recharger-perimetre-role',
                        'recharger-role',
                        'supprimer-perimetre',
                        'supprimer-role',
                        'flash-message',
                    ],
                    'privileges' => [
                        UtilisateurPrivileges::UTILISATEUR_MODIFIERROLE,
@@ -145,13 +159,39 @@ return [
                            ],
                        ],
                    ],
                    'changer-mot-de-passe' => [
                    'modifier' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/modifier/:utilisateur',
                            'defaults'    => [
                                'controller' => UtilisateurController::class,
                                'action' => 'modifier',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    ],
                    'enregistrer-mot-de-passe' => [
                        'type' => Segment::class,
                        'options' => [
                            'route'       => '/changer-mot-de-passe/:user/:token',
                            'route' => '/enregistrer-mot-de-passe/:token',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'changer-mot-de-passe',
                                'action' => 'enregistrer-mot-de-passe',
                            ],
                            'constraints' => [
                                'utilisateur' => '[a-z0-9-]+',
                            ],
                        ],
                    ],
                    'recuperer-mot-de-passe' => [
                        'type' => Literal::class,
                        'options' => [
                            'route' => '/recuperer-mot-de-passe',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'recuperer-mot-de-passe',
                            ],
                        ],
                    ],
@@ -195,23 +235,113 @@ return [
                            ],
                        ],
                    ],
                    'add-role' => [
                    'ajouter-role' => [
                        'type' => Segment::class,
                        'options' => [
                            'route'       => '/add-role/:utilisateur/:role',
                            'route' => '/ajouter-role/:utilisateur',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'add-role',
                                'action' => 'ajouter-role',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    'remove-role' => [
                    ],
                    'ajouter-perimetre' => [
                        'type' => Segment::class,
                        'options' => [
                            'route'       => '/remove-role/:utilisateur/:role',
                            'route' => '/ajouter-perimetre/:utilisateur/:role/:perimetre',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'remove-role',
                                'action' => 'ajouter-perimetre',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                                'role' => '\d+',
                                'perimetre' => '\d+',
                            ],
                        ],
                    ],
                    'lister-role' => [
                        'type' => Segment::class,
                        'options' => [
                            'route' => '/lister-role/:utilisateur',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'lister-role',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    ],
                    'lister-perimetre' => [
                        'type' => Segment::class,
                        'options' => [
                            'route' => '/lister-perimetre/:utilisateur/:role',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'lister-perimetre',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                                'role' => '\d+',
                            ],
                        ],
                    ],
                    'recharger-role' => [
                        'type' => Segment::class,
                        'options' => [
                            'route' => '/recharger-role/:utilisateur',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'recharger-role',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    ],
                    'recharger-perimetre-role' => [
                        'type' => Segment::class,
                        'options' => [
                            'route' => '/recharger-perimetre-role/:utilisateur',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'recharger-perimetre-role',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    ],
                    'supprimer-perimetre' => [
                        'type' => Segment::class,
                        'options' => [
                            'route' => '/supprimer-perimetre/:utilisateur/:role/:perimetre',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'supprimer-perimetre',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                                'role' => '\d+',
                                'perimetre' => '\d+',
                            ],
                        ],
                    ],
                    'supprimer-role' => [
                        'type' => Segment::class,
                        'options' => [
                            'route' => '/supprimer-role/:utilisateur/:role',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'supprimer-role',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                                'role' => '\d+',
                            ],
                        ],
                    ],
@@ -223,6 +353,22 @@ return [
                                'controller' => UtilisateurController::class,
                                'action' => 'changer-statut',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    ],
                    'synchroniser' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/synchroniser/:utilisateur',
                            'defaults'    => [
                                'controller' => UtilisateurController::class,
                                'action' => 'synchroniser',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    ],
                    'refresh' => [
@@ -243,6 +389,19 @@ return [
                                'controller' => UtilisateurController::class,
                                'action' => 'supprimer',
                            ],
                            'constraints' => [
                                'utilisateur' => '\d+',
                            ],
                        ],
                    ],
                    'flash-message' => [
                        'type' => 'Literal',
                        'options' => [
                            'route' => '/flash-message',
                            'defaults' => [
                                'controller' => UtilisateurController::class,
                                'action' => 'flash-message',
                            ],
                        ],
                    ],
                ],
@@ -257,13 +416,21 @@ return [
        ],
    ],

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

    'form_elements' => [
        'invokables' => [
            UserRechercheForm::class => UserRechercheForm::class,
            InitCompteForm::class => InitCompteForm::class,
            PasswordEnregistrementForm::class => PasswordEnregistrementForm::class,
        ],
        'factories' => [
            UserForm::class => UserFormFactory::class,
            UserRoleForm::class => UserRoleFormFactory::class,
            PasswordRecuperationForm::class => PasswordRecuperationFormFactory::class,
            SelectionUtilisateurForm::class => SelectionUtilisateurFormFactory::class,
        ],
    ],
@@ -275,9 +442,13 @@ return [
        ]
    ],

    'controllers'     => [

    'view_helpers' => [
        'aliases' => [
            'userRole' => UserRole::class,
        ],
        'factories' => [
            UtilisateurController::class => UtilisateurControllerFactory::class,
        ]
            UserRole::class => UserRoleFactory::class,
        ],
    ],
];
Loading