Commit 3dfcbfc5 authored by THEO GUILLON's avatar THEO GUILLON

Merge branch '2.0.0' into 'master'

2.0.0

Closes #96, #350, #349, #348 et #360

See merge request libriciel/pole-citoyens/web-DPO/web-DPO!453
parents c853dfb3 b689eda4
Pipeline #11186 failed with stage
in 1 minute and 52 seconds
DB_HOST=web-dpo-db
DB_USERNAME=webdpo
DB_PASSWORD=webdpo
DB_APP_NAME=webdpo
DB_TEST_NAME=webdpo_test
ADD_DATA_DEV=1
TZ=Europe/Paris
DB_HOST=web-dpo-db
DB_USERNAME=webdpo
DB_PASSWORD=webdpo
DB_APP_NAME=webdpo
DB_TEST_NAME=webdpo_test
ADD_DATA_DEV=1
TZ=Europe/Paris
DB_HOST=web-dpo-db
DB_USERNAME=webdpo
DB_PASSWORD=webdpo
DB_APP_NAME=webdpo
DB_TEST_NAME=webdpo_test
ADD_DATA_DEV=0
TZ=Europe/Paris
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
/app/Plugin/Database /app/Plugin/Database
/app/Plugin/FusionConv /app/Plugin/FusionConv
/app/Plugin/LdapManager /app/Plugin/LdapManager
/app/Plugin/LibricielChecks
/app/Plugin/Postgres /app/Plugin/Postgres
/app/Plugin/Translator /app/Plugin/Translator
/app/webroot/js/bootstrap /app/webroot/js/bootstrap
...@@ -41,6 +42,7 @@ ...@@ -41,6 +42,7 @@
/sonar-project.properties /sonar-project.properties
/sonar-scanner-3.3.0.1492-linux /sonar-scanner-3.3.0.1492-linux
/.scannerwork/ /.scannerwork/
/.env
# OS generated files # # OS generated files #
###################### ######################
......
deploy_ftp: deploy_ftp:
only: only:
- tags - tags
image: ubuntu:16.04 image: ubuntu:20.04
variables: variables:
TARBALL_NAME: web-dpo-${CI_COMMIT_REF_NAME}.tar.gz TARBALL_NAME: web-dpo-${CI_COMMIT_REF_NAME}.tar.gz
TZ: Europe/Paris
PAYLOAD: "payload={\"text\": \"[web-DPO] Création de la version [$CI_COMMIT_REF_NAME](https://ressources.libriciel.fr/web-dpo/Package_web-dpo-${CI_COMMIT_REF_NAME}.tar.gz)\"}" PAYLOAD: "payload={\"text\": \"[web-DPO] Création de la version [$CI_COMMIT_REF_NAME](https://ressources.libriciel.fr/web-dpo/Package_web-dpo-${CI_COMMIT_REF_NAME}.tar.gz)\"}"
before_script: before_script:
...@@ -19,13 +20,19 @@ deploy_ftp: ...@@ -19,13 +20,19 @@ deploy_ftp:
# Disable strict host key checking # Disable strict host key checking
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- apt-get update && apt-get dist-upgrade -y -q - ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
- apt-get install -y openssh-client lftp curl git
- apt-get install -y php7.0 php7.0-curl php-pear php7.0-gd php7.0-mbstring php7.0-mcrypt npm wget - apt update
- apt install -y openssh-client lftp curl git
- apt install -y php7.4 php7.4-dev php7.4-curl php-pear php7.4-gd php7.4-mbstring libmcrypt-dev npm wget
- pecl channel-update pecl.php.net
- pecl install mcrypt-1.0.3
- echo "extension=mcrypt.so" > /etc/php/7.4/mods-available/mcrypt.ini
- phpenmod mcrypt
- pear channel-update pear.php.net
- php -v - php -v
- curl -s https://getcomposer.org/installer | php - curl -s https://getcomposer.org/installer | php
- npm install -g bower - npm install -g bower
- ln -s /usr/bin/nodejs /usr/bin/node
- php composer.phar install --ignore-platform-reqs - php composer.phar install --ignore-platform-reqs
script: script:
- cd ${PWD} - cd ${PWD}
......
...@@ -3,34 +3,106 @@ ...@@ -3,34 +3,106 @@
Toutes les modifications apportées au projet seront documentées dans ce fichier. Toutes les modifications apportées au projet seront documentées dans ce fichier.
Le format est basé sur le modèle [Keep a Changelog](http://keepachangelog.com/) et adhère aux principes du [Semantic Versioning](http://semver.org/). Le format est basé sur le modèle [Keep a Changelog](http://keepachangelog.com/) et adhère aux principes du [Semantic Versioning](http://semver.org/).
2.0.0 - 2019-XX-XX [2.0.0] - 18-09-2020
===== =====
### Ajouts ## Ajouts
### Evolutions
- php7.2
### Corrections
### Suppressions
1.2.0 - 2019-XX-XX
=====
### Ajouts
- Mise en place d'une FAQ. - Mise en place d'une FAQ.
- Mise en place de nouveau droits en rapport avec le FAQ. - Mise en place d'un typage des annexes.
- Mise en place de l'initialisation d'un traitement par le DPO
- Mise en place de la visualisation de tous les traitements au sein de sa collectivité.
- Mise en place des traitements dit de sous-traitance (responsable de traitement externe)
- Mise en place d'un registre de sous-traitance
### sur les droits :
- Ajout d'un droit en rapport avec la création d'un article dans la FAQ.
- Ajout d'un droit en rapport avec la modification d'un article dans la FAQ.
- Ajout d'un droit en rapport avec la suppression d'un article dans la FAQ.
- Ajout d'un droit en rapport avec la visualisation d'un article dans la FAQ.
- Ajout d'un droit en rapport avec la gestion du typage des annexes.
- Ajout d'un droit en rapport avec la consultation de tous les traitements au sein de l'entité.
- Ajout d'un droit en rapport avec la création d'un co-responsable lors de la déclaration d'un traitement.
- Ajout d'un droit en rapport avec la création d'un sous-traitant lors de la déclaration d'un traitement.
### sur les formulaires :
- Mise en place de condition sur les différents champs du formulaire. Condition appliquée lors de la déclaration d'un traitement.
- Mise en place des champs pour la sous-finalité. Avec paramétrage sur l'utilisation des champs dans un traitement.
- Mise en place des champs concernant la base légale. Avec paramétrage sur l'utilisation des champs dans un traitement.
- Mise en place des champs concernant la prise de décision automatisée. Avec paramétrage sur l'utilisation des champs dans un traitement.
- Mise en place des champs concernant le transfert des données hors UE. Avec paramétrage sur l'utilisation des champs dans un traitement.
- Mise en place des champs concernant l'utilisation des données sensibles. Avec paramétrage sur l'utilisation des champs dans un traitement.
- Mise en place de l'acceptation de différent format de fichier en annexe d'un traitement. Avec paramétrage sur l'utilisation des champs dans un traitement.
- Mise en place des questions définissant si une AIPD est obligatoire ou pas. Avec paramétrage sur l'utilisation des champs dans un traitement.
- Mise en place de valeur par défaut lors de la création d'un traitement. Ces valeurs par défaut sont ajoutées lors de la création d'un traitement.
- Ajout de la possibilité de rendre obligatoire un champ case à coché dans le formulaire.
### sur les traitements :
- Ajout d'un champ sur la réalisation de l'AIPD
- Ajout d'un champ sur le dépôt de l'AIPD
- Déclaration de traitement en tant que sous-traitant pour le compte d'un responsable de traitement. Avec notion de sous-traitance ultérieure.
### sur les modèles :
- Ajout des variables concernant les informations complémentaires.
- Ajout des variables concernant le responsable de traitement.
- Ajout des variables concernant l'AIPD.
- Ajout des variables concernant les co-responsables.
- Ajout des variables concernant les sous-traitants.
- Ajout des variables concernant les annexes.
### sur les co-responsables :
- Ajout des informations relatives au DPO.
### sur les sous-traitants :
- Ajout des informations relatives au DPO.
### sur les normes :
- Ajout des normes "Actes réglementaires uniques" (RU-060, RU-063, RU-065, RU-066)
- Ajout des normes "Normes simplifiées" (NS-060)
- Ajout des normes "Référentiel santé" (RS)
- Ajout des normes "Méthodologies de référence" (MR)
### sur le registre :
- Ajout de nouveau filtre
## Evolutions
- Affichage de l'onglet "Information de l'entité" lors de la visualisation d'un traitement au registre
- PostgreSQL 10.9
- PHP 7.4
- Ubuntu 20.04 LTS | Centos8
### sur les formulaires :
- Plus de distinction entre un formulaire sans sous-traitance et avec sous-traitance.
### sur les modèles :
- Modification de certaines variables.
### sur les co-responsables :
- Il n'y a plus de duplication des informations du co-responsable lors de la déclaration d'un traitement. Si le co-responsable est modifié les informations seront reportées automatiquement sur le traitement.
- Certains champs ne sont plus obligatoires.
### sur les sous-traitants :
- Il n'y a plus de duplication des informations du sous-traitant lors de la déclaration d'un traitement. Si le sous-traitant est modifié les informations seront reportées automatiquement sur le traitement.
- Certains champs ne sont plus obligatoires.
### sur un traitement :
- Évolution du libellé du champ "Finalité"
- Évolution du libellé du champ "Transfert hors UE"
- Évolution du libellé du champ "Données sensibles"
## Corrections
- Abroger norme "Actes réglementaires uniques" (RU-059)
- Générations documentaires
- Génération au format CSV
### Evolutions
### Corrections
### Suppressions ### Suppressions
- Suppression de l'onglet "Information de l'entité" lors de la création, modification et visualisation d'un traitement
- Suppression du verrouillage des traitements au registre.
1.1.0 - 2019-12-03 [1.1.0] - 03-12-2019
===== =====
### Ajouts ### Ajouts
...@@ -85,7 +157,7 @@ connecté. ...@@ -85,7 +157,7 @@ connecté.
- Suppression de l'affichage des variables du co-responsable dans les variables pour l'extrait de registre. - Suppression de l'affichage des variables du co-responsable dans les variables pour l'extrait de registre.
- Suppresion de la visualisation d'un profil. - Suppresion de la visualisation d'un profil.
1.0.1 - 2018-12-13 [1.0.1] - 13-12-2018
===== =====
### Ajouts ### Ajouts
...@@ -104,7 +176,7 @@ en place pour faciliter l'affichage et le changement. ...@@ -104,7 +176,7 @@ en place pour faciliter l'affichage et le changement.
- Génération du registre avec les annexes. - Génération du registre avec les annexes.
- Modification du nom des varibles dans l'aide pour crée les modèles. - Modification du nom des varibles dans l'aide pour crée les modèles.
1.0.0 - 2018-07-03 [1.0.0] - 03-07-2018
===== =====
### Ajouts ### Ajouts
......
This diff is collapsed.
# Docker
## Avertissements
### Fichiers envoyés dans les conteneurs docker
L'utilisation avec docker en mode développement implique, pour éviter de polluer l'espace de travail sur le poste du
développeur avec les répertoires `app/tmp`, `vendors` ou `node_modules`, de lister les fichiers à envoyer dans le
conteneur docker dans les fichiers `docker-compose.yml` et `docker/app/Dockerfile`.
Cela ne pose pas de problème pour les fichiers se trouvant dans `app`, mais peut nécessiter des ajustements si des fichiers
sont ajoutés dans d'autres répertoires ou à la racine.
### Patches SQL
Par ailleurs, pour pouvoir passer les fichiers SQL au lancement du docker, il faut penser, si on renomme ou ajoute des
fichiers SQL, à modifier la fonction `init_data_db` du fichier `docker/app/usr/bin/docker-entrypoint.sh`.
### Fichiers importants pour docker
| Fichier / dossier | Git | Commentaire |
| --- | --- | --- |
| `docker/app/Dockerfile` | Nouveau | `Dockerfile` du conteneur applicatif |
| `docker/app/etc/apache2/sites-available/webdpo.conf` | Nouveau | Configuration apache du conteneur applicatif |
| `docker/app/etc/cron.d/web-dpo` | Nouveau | Tâche planifiée du conteneur applicatif |
| `docker/app/usr/bin/composer-install.php` | Nouveau | Script facilitant l'installation de `composer` sur le conteneur applicatif |
| `docker/app/usr/bin/docker-entrypoint.sh` | Nouveau | Script exécuté au lancement du conteneur applicatif, passe les patches SQL, corrige les sources de PHPUnit, création de liens symboliques, modification des permissions et lancement des services (cron, apache) |
| `docker/app/var/www/html/web-dpo/app/Config/database.php` | Nouveau | Configuration de la connexion à la base de données propre au conteneur applicatif |
| `docker/app/var/www/html/web-dpo/app/Config/email.php` | Nouveau | Configuration du serveur de mail propre au conteneur applicatif |
| `docker/postgres/docker-entrypoint-initdb.d/000-init.sql` | Nouveau | Création de l'utilisateur et de la base de données `webdpo` sur le conteneur PostgreSQL |
| `.env` | Nouveau | Variables d'environnement utilisées pour les conteneurs docker |
| `cake_utils.sh` | Nouveau | Lancement de commandes (pre_commit, lint, tests, ...) dans le conteneur applicatif |
| `docker-compose.sh` | Nouveau | Commandes permettant de nettoyer ou de lancer les conteneurs docker nécessaires à web-DPO (voir ci-dessous) |
| `docker-compose.yml` | Nouveau | `docker-compose` des services de `web-DPO` |
| `README-docker.md` | Nouveau | Ce fichier d'information |
## Commandes
### Lancement de web-DPO
```bash
./docker-compose.sh web-dpo
```
### Nettoyage des images docker etc...
Lorsqu'on change de page ou que l'on a fait des modifications importantes, pour supprimer les images docker etc et
repartir sur une installation propre.
```bash
./docker-compose.sh clear
```
### Exécution côté conteneur applicatif
```bash
docker-compose exec web-dpo-app /bin/bash
```
#### Console de vérification de l'application
```bash
sudo -u www-data vendors/bin/cake checks -app app
```
#### Lancement de l'intégration continue manuellement
```bash
./cake_utils.sh pre_commit
```
## Conteneurs Docker
| Application | Container | URL | Identifiant |
| --- | --- | --- | --- |
| __Cloudooo__ | `web-dpo-cloudooo` | | |
| __Golem__ | `web-dpo-golem` | | |
| __Mailcatcher__ | `web-dpo-mailcatcher` | http://localhost:2081/ | |
| __PostgreSQL__ | `web-dpo-db` | | `webdpo` / `webdpo` |
| __web-DPO__ | `web-dpo-app` | http://localhost:2080/ | `superadmin` / `admin` |
Voir le fichier `docker-compose.yml`
# Application web-DPO v1.1.0 # Application web-DPO v2.0.0
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.0-8892BF.svg)](https://php.net/) [![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.0-8892BF.svg)](https://php.net/)
[![License](https://img.shields.io/badge/licence-CeCILL%20v2-blue.svg)](http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html) [![License](https://img.shields.io/badge/licence-CeCILL%20v2-blue.svg)](http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html)
[![Requires](https://img.shields.io/badge/requires-CakePHP%202.10-navy.svg)](http://book.cakephp.org/3.0/fr/index.html) [![Requires](https://img.shields.io/badge/requires-CakePHP%202.10-navy.svg)](http://book.cakephp.org/3.0/fr/index.html)
## Présentation ## Présentation
Vous êtes en présence des sources de l'application **web-DPO** version 1.1.0 Vous êtes en présence des sources de l'application **web-DPO** version 2.0.0
Avant toute nouvelle installation, veuillez faire une sauvegarde de la base de données ainsi que la version actuelle des Avant toute nouvelle installation, veuillez faire une sauvegarde de la base de données ainsi que la version actuelle des
sources. sources.
...@@ -17,11 +17,11 @@ Veuillez suivre les indications décrites dans la documentation d'installation : ...@@ -17,11 +17,11 @@ Veuillez suivre les indications décrites dans la documentation d'installation :
### Pré-requis ### Pré-requis
- CakePHP 2.10 - CakePHP 2.10
- PHP 7.0 - PHP 7.4
- PostgrSQL 9.5 - PostgrSQL 12.2
### Support ### Support
Les produits édités par **Libriciels** sont libres sous licence "CeCILL v2". Les produits édités par **Libriciel** sont libres sous licence "CeCILL v2".
Pour bénéficier du **support** de nos services pour l'installation et/ou la configuration du produit, ou pour bénéficier Pour bénéficier du **support** de nos services pour l'installation et/ou la configuration du produit, ou pour bénéficier
de la **maintenance**, merci de contacter un commercial pour ouvrir un compte. de la **maintenance**, merci de contacter un commercial pour ouvrir un compte.
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -66,7 +66,8 @@ Inflector::rules('plural', array( ...@@ -66,7 +66,8 @@ Inflector::rules('plural', array(
'article_organisation' => 'articles_organisations', 'article_organisation' => 'articles_organisations',
'organisation_user' => 'organisations_users', 'organisation_user' => 'organisations_users',
'soustraitant_organisation' => 'soustraitants_organisations', 'soustraitant_organisation' => 'soustraitants_organisations',
'responsable_organisation' => 'responsables_organisations' 'responsable_organisation' => 'responsables_organisations',
'typage_organisation' => 'typages_organisations',
), ),
'uninflected' => array() 'uninflected' => array()
)); ));
...@@ -80,10 +81,9 @@ Inflector::rules('plural', array( ...@@ -80,10 +81,9 @@ Inflector::rules('plural', array(
*/ */
CakePlugin::loadAll([ CakePlugin::loadAll([
//['bootstrap' => false],
'AuthManager' => ['bootstrap' => true, 'routes' => false], 'AuthManager' => ['bootstrap' => true, 'routes' => false],
'Appchecks' => ['bootstrap' => false, 'routes' => false],
'Database' => ['bootstrap' => false, 'routes' => false], 'Database' => ['bootstrap' => false, 'routes' => false],
'LibricielChecks' => ['bootstrap' => false, 'routes' => false],
'Postgres' => ['bootstrap' => false, 'routes' => false], 'Postgres' => ['bootstrap' => false, 'routes' => false],
'Translator' => ['bootstrap' => true, 'routes' => false] 'Translator' => ['bootstrap' => true, 'routes' => false]
]); ]);
...@@ -141,6 +141,10 @@ require ROOT . DS . 'vendors'. DS .'autoload.php'; ...@@ -141,6 +141,10 @@ require ROOT . DS . 'vendors'. DS .'autoload.php';
spl_autoload_unregister(['App', 'load']); spl_autoload_unregister(['App', 'load']);
spl_autoload_register(['App', 'load'], true, true); spl_autoload_register(['App', 'load'], true, true);
// Gestion spéciale des exceptions pour qu'elles deviennent des messages flash dans l'interface
App::uses('UserFriendlyExceptionHandler', 'Lib');
UserFriendlyExceptionHandler::setUp();
//Configuration du plugin Cakeflow //Configuration du plugin Cakeflow
Configure::write('Cakeflow.app', 'webdelib'); Configure::write('Cakeflow.app', 'webdelib');
...@@ -271,6 +275,7 @@ require_once(APP . DS . 'Lib' . DS . 'basics.php'); ...@@ -271,6 +275,7 @@ require_once(APP . DS . 'Lib' . DS . 'basics.php');
CakePlugin::load('Cakeflow', ['bootstrap' => true, 'routes' => false]); CakePlugin::load('Cakeflow', ['bootstrap' => true, 'routes' => false]);
CakePlugin::load('FusionConv', ['bootstrap' => true, 'routes' => false]); CakePlugin::load('FusionConv', ['bootstrap' => true, 'routes' => false]);
CakePlugin::load('LdapManager', ['bootstrap' => true, 'routes' => false]); CakePlugin::load('LdapManager', ['bootstrap' => true, 'routes' => false]);
CakePlugin::load('LibricielChecks', ['bootstrap' => false, 'routes' => false]);