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 @@
/app/Plugin/Database
/app/Plugin/FusionConv
/app/Plugin/LdapManager
/app/Plugin/LibricielChecks
/app/Plugin/Postgres
/app/Plugin/Translator
/app/webroot/js/bootstrap
......@@ -41,6 +42,7 @@
/sonar-project.properties
/sonar-scanner-3.3.0.1492-linux
/.scannerwork/
/.env
# OS generated files #
######################
......
deploy_ftp:
only:
- tags
image: ubuntu:16.04
image: ubuntu:20.04
variables:
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)\"}"
before_script:
......@@ -19,13 +20,19 @@ deploy_ftp:
# Disable strict host key checking
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- apt-get update && apt-get dist-upgrade -y -q
- 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
- ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
- 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
- curl -s https://getcomposer.org/installer | php
- npm install -g bower
- ln -s /usr/bin/nodejs /usr/bin/node
- php composer.phar install --ignore-platform-reqs
script:
- cd ${PWD}
......
......@@ -3,34 +3,106 @@
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/).
2.0.0 - 2019-XX-XX
[2.0.0] - 18-09-2020
=====
### Ajouts
### Evolutions
- php7.2
### Corrections
### Suppressions
1.2.0 - 2019-XX-XX
=====
### Ajouts
## Ajouts
- 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
- 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
......@@ -85,7 +157,7 @@ connecté.
- Suppression de l'affichage des variables du co-responsable dans les variables pour l'extrait de registre.
- Suppresion de la visualisation d'un profil.
1.0.1 - 2018-12-13
[1.0.1] - 13-12-2018
=====
### Ajouts
......@@ -104,7 +176,7 @@ en place pour faciliter l'affichage et le changement.
- Génération du registre avec les annexes.
- 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
......
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/)
[![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)
## 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
sources.
......@@ -17,11 +17,11 @@ Veuillez suivre les indications décrites dans la documentation d'installation :
### Pré-requis
- CakePHP 2.10
- PHP 7.0
- PostgrSQL 9.5
- PHP 7.4
- PostgrSQL 12.2
### 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
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(
'article_organisation' => 'articles_organisations',
'organisation_user' => 'organisations_users',
'soustraitant_organisation' => 'soustraitants_organisations',
'responsable_organisation' => 'responsables_organisations'
'responsable_organisation' => 'responsables_organisations',
'typage_organisation' => 'typages_organisations',
),
'uninflected' => array()
));
......@@ -80,10 +81,9 @@ Inflector::rules('plural', array(
*/
CakePlugin::loadAll([
//['bootstrap' => false],
'AuthManager' => ['bootstrap' => true, 'routes' => false],
'Appchecks' => ['bootstrap' => false, 'routes' => false],
'Database' => ['bootstrap' => false, 'routes' => false],
'LibricielChecks' => ['bootstrap' => false, 'routes' => false],
'Postgres' => ['bootstrap' => false, 'routes' => false],
'Translator' => ['bootstrap' => true, 'routes' => false]
]);
......@@ -141,6 +141,10 @@ require ROOT . DS . 'vendors'. DS .'autoload.php';
spl_autoload_unregister(['App', 'load']);
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
Configure::write('Cakeflow.app', 'webdelib');
......@@ -271,6 +275,7 @@ require_once(APP . DS . 'Lib' . DS . 'basics.php');
CakePlugin::load('Cakeflow', ['bootstrap' => true, 'routes' => false]);
CakePlugin::load('FusionConv', ['bootstrap' => true, 'routes' => false]);
CakePlugin::load('LdapManager', ['bootstrap' => true, 'routes' => false]);
CakePlugin::load('LibricielChecks', ['bootstrap' => false, 'routes' => false]);
//appVersion
$versionFile = file(ROOT . DS . 'VERSION.txt');
......
......@@ -24,7 +24,7 @@
* In production mode, flash messages redirect after a time interval.
* In development mode, you need to click the flash message to continue.
*/
Configure::write('debug', 0);
Configure::write('debug', 2);
/**
* Configure the Error handler used to handle errors for your application. By default
......@@ -191,7 +191,7 @@
$sessionDurationMinutes = 4 * 60;
Configure::write('Session', [
'defaults' => 'php',
'cookie' => 'WebCIL',
'cookie' => 'web-DPO',
'timeout' => $sessionDurationMinutes,
'cookieTimeout' => $sessionDurationMinutes,
'checkAgent' => false,
......
......@@ -40,17 +40,17 @@
class EmailConfig {
public $default = [
'transport' => 'Mail',
'transport' => 'Smtp',
'from' => 'you@localhost',
//'charset' => 'utf-8',
//'headerCharset' => 'utf-8',
'charset' => 'utf-8',
'headerCharset' => 'utf-8',
];
public $email = [
'transport' => 'Mail',
'transport' => 'Smtp',
'from' => 'ne-pas-repondre@web-dpo.fr',
//'replyTo' => 'noreply@collectivite',
'host' => 'mail',
'replyTo' => 'ne-pas-repondre@web-dpo.fr',
'host' => 'localhost',
'port' => 25,
'timeout' => 30,
// 'username' => '',
......
......@@ -88,10 +88,10 @@ define('FORMAT_DATE', '%e-%m-%Y');
define('FORMAT_DATE_HEURE', '%e-%m-%Y à %H:%M');
//Validation champs Nom, Prenom etc...
define('REGEXP_ALPHA_FR', '/^[a-zA-Z\-ÂÀâàÇçÉÊÈËéêèëÎÏîïÔÖôöÛÙûù ]*$/i');
define('REGEXP_ALPHA_FR', "/^[a-zA-Z\'-ÂÀâàÇçÉÊÈËéêèëÎÏîïÔÖôöÛÙûù ]*$/i");
//Validation champs email
define('REGEXP_EMAIL_FR', '/^[a-zA-Z1-9\-@.]*$/i');
define('REGEXP_EMAIL_FR', '/^[a-zA-Z0-9\-@._]*$/i');
Configure::write('logoAcceptedTypes', [
'image/png', // .png
......@@ -99,3 +99,22 @@ Configure::write('logoAcceptedTypes', [
'image/gif', // .gif
'image/svg+xml' //.svg
]);
Configure::write('allFileAnnexeAcceptedTypes', [
'application/vnd.ms-excel', // .xls
'application/msword', // .doc
'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .docx
'application/vnd.ms-powerpoint', // .ppt
'application/vnd.openxmlformats-officedocument.presentationml.presentation', // .pptx
'image/gif', // .gif
'image/jpeg', // .jpeg et .jpg
'image/png', // .png
'application/vnd.oasis.opendocument.presentation', //.odp
'application/vnd.oasis.opendocument.spreadsheet', //.ods
'application/vnd.oasis.opendocument.text', //.odt
'application/pdf', //.pdf
]);
//Dossier qui va contenir les certificats des organisations pour le LDAPS
define('CERTIFICATS', DS . "certificats");
define('CHEMIN_CERTIFICATS', CHEMIN_FICHIER . CERTIFICATS . DS);
......@@ -69,6 +69,7 @@ class ChecksShell extends AppShell
}
foreach($results as $key => $result) {
$result += ['value' => null];
if ($result['success'] === true) {
$icon = "\xE2\x9C\x94";
} else {
......
<?php
/**
* web-delib : Application de gestion des actes administratifs
* Copyright (c) Libriciel SCOP (http://www.libriciel.fr)
* CronShell