diff --git a/config/autoload/unicaen-mail.local.php.dist b/config/autoload/unicaen-mail.local.php.dist index 07512a37d145912a8bc1022d6b913dbe367063ee..60396bbb0d5154c63db66df06d7f87b041132935 100644 --- a/config/autoload/unicaen-mail.local.php.dist +++ b/config/autoload/unicaen-mail.local.php.dist @@ -21,24 +21,14 @@ return [ */ 'module' => [ - 'default' => [ - 'redirect_to' => [ 'PPP.NNN@XXX.fr', ], - 'do_not_send' => false, - 'redirect' => true, - 'subject_prefix' => 'Mes Formations', - 'from_name' => 'Mes Formations | Application de gestion des formations du personnel', - 'from_email' => 'XXXX', - - ], - 'Formation' => [ - 'redirect_to' => [ 'PPP.NNN@XXX.fr', ], - 'do_not_send' => false, - 'redirect' => true, - 'subject_prefix' => 'Mes Formations', - 'from_name' => 'Mes Formations | Application de gestion des formations du personnel', - 'from_email' => 'XXXX', - ] - ] + 'redirect_to' => ['PPP.NNN@XXX.fr',], + 'do_not_send' => false, + 'redirect' => true, + 'subject_prefix' => 'Mes Formations', + 'from_name' => 'Mes Formations | Application de gestion des formations du personnel', + 'from_email' => 'XXXX', + //'reply_to' => 'XXXX', + ], ], ]; \ No newline at end of file diff --git a/documentation/docs/install.md b/documentation/docs/install.md deleted file mode 100644 index 64fa9d6f07c6dc66fa89480fb195b1188e9f5f78..0000000000000000000000000000000000000000 --- a/documentation/docs/install.md +++ /dev/null @@ -1,92 +0,0 @@ -# Documentation pour l'installation et la configuration du projet - -## Clonage du projet - -Clonez le projet dans le répertoire `/var/www/html/` : - -```bash -git clone https://git.unicaen.fr/open-source/mes-formations.git /var/www/html/ -``` - -**Note :** À partir de cette étape, toutes les commandes et chemins supposent que vous êtes dans le répertoire -/var/www/html/. - -## Mise à jour avec Composer - -Rendez-vous dans le répertoire du projet et exécutez la commande suivante pour mettre à jour les dépendances : - -```bash -composer update -``` - -**Note :** Attention à la configuration de votre proxy - -## Configuration - -La configuration à la charge de l'établissement est contenue dans les fichiers `local.dist` contenu dans le répertoire -`./config/autoload`. -Ces configurations doivent être adaptées aux besoins spécifiques de l'établissement, et l'extension `.dist` doit être -retirée. - -Liste des fichiers distants : - -- `database.local.php.dist` -- `local.php.dist` -- `synchro.local.php` -- `unicaen-app.local.php.dist` -- `unicaen-authentification.local.php.dist` -- `unicaen-evenement.local.php.dist` -- `unicaen-fichier.local.php.dist` -- `unicaen-ldap.local.php.dist` -- `unicaen-mail.local.php.dist` - -## Installation sur le serveur - -Lancez la commande suivante pour exécuter le processus d'installation : - -```bash -./vendor/bin/laminas bddadmin:install -``` - -Après l'installation, vérifiez que les données ont été correctement insérées par la mise à jour. - -## Création des répertoires nécessaires - -Créez les répertoires suivants si ce n'est pas déjà fait : - -```bash -mkdir -p ./data/DoctrineORMModule/Proxy -mkdir -p ./upload -``` - -Assurez-vous que ces répertoires ont les permissions appropriées. - -## Configuration des paramètres PHP - -Vérifiez que les paramètres suivants dans PHP sont correctement configurés à 0 : - - session.cookie_lifetime - session.gc_maxlifetime - -Pour vérifier, consultez la configuration PHP : - -php -i | grep session.cookie_lifetime -php -i | grep session.gc_maxlifetime - -Modification des paramètres - -Si les valeurs ne sont pas correctes, modifiez le fichier /etc/php/8.2/fpm/php.ini et assurez-vous que les lignes -suivantes sont définies : - -session.cookie_lifetime = 0 -session.gc_maxlifetime = 0 - -Redémarrez le service PHP-FPM pour appliquer les modifications : - -systemctl restart php-fpm - -## Mise en place de la synchronisation et execution de celle-ci - -Configurez le fichier de synchronisation selon les besoins du projet et les fichiers de base de données sources comme -décrit dans [la documentation sur les connecteurs](connecteurs.md). -Pour lancer la synchronisation suivez les dernières étapes de la documentation associée. diff --git a/documentation/docs/installation.md b/documentation/docs/installation.md new file mode 100644 index 0000000000000000000000000000000000000000..085aaf90e08f6696ca8345d55eab3469ad6b0d37 --- /dev/null +++ b/documentation/docs/installation.md @@ -0,0 +1,326 @@ +Documentation pour l'installation et la configuration du projet +=== + +1. [Présupposition](#présupposition) +2. [Installation](#installation-de-php8-des-modulesextensions-utiles-et-autres-choses-utiles) +3. [Configuration](#configuration) +4. [Installation du modèle de données et données de base](#installation-du-modèle-de-données-et-données-de-base) +5. [Synchronisation des données du SIRH](#synchronisation-des-données-de-votre-sirh) +6. [Paramètrages](#paramètrages) +7. [Troubleshooting](#troubleshooting) + +--- + +# Présupposition + +Les présuppositions suivantes seront faites ici, mais elles peuvent être contournées. + +## Système d'exploitation +**Le serveur utilise `debian` comme système d'exploitation**. +Une autre distribution linux peut-être utilisée facilement en modifiant légèrement les commandes systèmes utilisées. +Il sera en revanche surement plus complexe de réaliser l'installation sous MacOS ou Windows. +**Mes Formations** n'a pas été testée sous ces autres systèmes d'exploitations. + +## Moteur web et PHP +**Nous utilisons PHP-FPM et Apache sur les instances de l'Université de Caen Normandie**. +Il est surement possible d'en utiliser ici d'autres en adaptant les configurations qui seront décrites dans la suite. + +## Supposition sur le système + +**Nous supposerons aussi que si le serveur est derrière un proxy alors les variables d'environnement associées sont bien positionnées**. +Notamment les variables `http_proxy` et `https_proxy`. + +**Nous supposerons que Mes Formations sera installée dans le répertoire `/var/www/html` du serveur**. +Ceci est facilement contournable en modifiant les configurations du serveur web. + +## Base de données interne + +**La base de données de Mes Formations est une base de données `pgsql` avec l'extension `unaccent` (qu'il faut penser à installer et s'assurer que l'application/usager pourra utiliser). + +--- + +# Installation de PHP8, des modules/extensions utiles et autres choses utiles + +L'installation de PHP8 et des modules/extensions se fait directement avec le gestionnaire de paquet de la distribution utilisée ; dans le cas de `debian` il s'agit de `apt`. + +```bash +user@serveur:/var/www/html$ apt install php-fpm +user@serveur:/var/www/html$ apt install php8.2-bcmath php8.2-intl php8.2-ldap php8.2-xml php8.2-mbstring php8.2-gd php8.2-curl php8.2-pgsql +``` + +On aura besoin de l'application **git** pour la récupération du dépôt et les futures mises à jour + +```bash +user@serveur:~$ apt install git +``` + +On aura besoin de composer (en version 2.x) pour la récupération des bibliothèques php. + +```bash +user@serveur:~$ apt install composer +``` + +# Récupération du dépôt et des bibliothèques associées + +La prochaine étape consiste à cloner le dépôt. + +```bash +user@serveur:~$ cd /var/www +user@serveur:/var/www$ git clone https://git.unicaen.fr/open-source/mes-formations.git html +``` + +Le fichier `composer.json` contient la liste des bibliothèques nécessaires. +Elle s'installe grâce à `composer`. + +```bash +user@serveur:/var/www$ cd html +user@serveur:/var/www/html$ composer install +``` + +## Création des répertoires nécessaires + +Créez les répertoires suivants si ce n'est pas déjà fait : + +```bash +user@serveur:/var/www/html$ mkdir -p ./data/DoctrineORMModule/Proxy +user@serveur:/var/www/html$ mkdir -p ./upload +``` + +Assurez-vous que ces répertoires ont les permissions appropriées. + +--- + +# Configuration + +La configuration à la charge de l'établissement est contenue dans les fichiers `local.dist` contenus dans le répertoire `./config/autoload`. +Ces configurations doivent être adaptées aux besoins spécifiques de l'établissement, et l'extension `.dist` doit être retirée. + +Liste des fichiers distants : +- `database-app.local.php.dist` +- `database-sirh.local.php.dist` +- `local.php.dist` +- `synchro.local.php.dist` +- `unicaen-app.local.php.dist` +- `unicaen-authentification.local.php.dist` +- `unicaen-evenement.local.php.dist` +- `unicaen-fichier.local.php.dist` +- `unicaen-ldap.local.php.dist` +- `unicaen-mail.local.php.dist` + + +## Configuration des BDD et de BDDADMIN + +La configuration de l'envoi des courriers électroniques passe par le fichier `database-app.local.php` et `database-sirh.local.php`. +Il est nécessaire de récupérer la configuration et d'adapter celle-ci. + +```bash +user@serveur:/var/www/html$ cp config/autoload/database-app.local.php.dist config/autoload/database-app.local.php +user@serveur:/var/www/html$ cp config/autoload/database-sirh.local.php.dist config/autoload/database-sirh.local.php +``` + +Il y a deux connexions à paramétrer : +- la connexion à la base de données de **Mes Formations** `orm_default` +- la connexion à la base de données du concentrateur de données ou SIRH `orm_sirh` +Pour la configuration, il est nécessaire de préciser le serveur, la base, l'utilisateur et le mot de passe dans les clefs correspondantes. + +Pour simplifier le paramétrage, les déclarations des secrets liés aux bases de données passent par des constantes. + +## Configuration de l'envoi des courriers électroniques + +La configuration de l'envoi des courriers électroniques passe par le fichier unicaen-mail.local.php. +Il est nécessaire de récupérer la configuration et d'adapter celle-ci. + +```bash +user@serveur:/var/www/html$ cp vendor/unicaen/mail/config/unicaen-mail.local.php.dist config/autoload/unicaen-mail.local.php +``` + +Dans ce fichier, on retrouve : +1. le paramètrage sur SMTP ; +2. le paramètrage du comportement de l'envoi des courriers électronique. + +La configuration du SMTP passe par la clef `transport_options` +```php +'transport_options' => [ + 'host' => 'smtp.mon-etablissement.fr', + 'port' => 25, +], +``` + +La configuration du comportement passe par la déclaration des clefs suivantes : +- `do_not_send` si à `true` aucun courrier n'est envoyé ; +- `redirect` si à `true` alors les courriers seront tous redirigés vers les adresses de la clef `redirect_to` ; +- `redirect_to` est un tableau d'adresse électronique vers qui les courriers seront redirigés (la virgule est le séparateur) ; +- `subject_prefix` est le préfixe des sujets des courriers (si la valeur est 'MesFormations' alors les sujets seront "[MesFormations] Mon sujet de courrier" ; +- `from_name` est le nom de l'expéditeur +- `from_email` est l'adresse électronique de l'expéditeur +- `reply_to` est l'adresse fournit pour la réponse à un courrier expédié par l'application + +**N.B.** : +Attention Mes Formations peut envoyer beaucoup de mail. +Il est nécessaire de white-lister l'adresse électronique d'expédition des courriers électroniques et/ou d'utiliser une adresse `noreply` et de bien paramètrer la clef `reply_to`. + + +## Paramétrage de l'authentification + +L'authentification est à paramétrer par le biais de deux fichiers : +1. `config/autoload/unicaen-ldap.local.php` paramètrage de l'accés au LDAP +2. `config/autoload/unicaen-authentification.local.php` paramètrage des modes d'authentification + +### Tout d'abord renommé les fichiers dist +```bash +user@serveur:/var/www/html$ mv config/autoload/unicaen-ldap.local.php.dist config/autoload/unicaen-ldap.local.php +user@serveur:/var/www/html$ mv config/autoload/unicaen-authentification.local.php.dist config/autoload/unicaen-authentification.local.php +``` + +### Paramétrage dans le fichier `config/autoload/unicaen-ldap.local.php` + +Ce paramètrage est assez immédiat ici, il s'agit de paramètrer l'accés au ldap pour la récupération d'information sur les utilisateurs connectés. + +Attention en fonction des identifiants de l'établissement à décommenter la bonne ligne à propos de `accountFilterFormat`. + +**N.B: ** +- Pour Caen, il s'agit du `supannEmpId` +- Pour Aix-Marseille et Rouen, il s'agit de l'`uid` + +### Paramétrage dans le fichier `config/autoload/unicaen-authentification.local.php` + +Dans ce fichier, il est question de paramètrer le mode d'authentification parmi : CAS, LDAP (et compte local), et shibboleth (pas de test réalisé ici pour le moment). + +L'activation de CAS passe par la déclaration du serveur à contact +```php +'cas' => [ + // laisser vide si pas de cas + 'connection' => [ + 'default' => [ + 'params' => [ + 'hostname' => 'cas.XXXX.fr', + 'port' => XXX, + 'version' => "2.0", + 'uri' => "", + 'debug' => false, + ], + ], + ], + 'form_skip' => true, +], +``` + +**N.B. :** form_skip permet d'éviter le formulaire d'identification si l'utilisateur a déjà un jeton d'identification valide + +L'activation de LDAP passe par le fait de positionner la variable `enable` à true de même pour les comptes locaux `db`. +```php +'local' => [ + 'order' => 2, + 'enabled' => true, + 'description' => "Utilisez ce formulaire si vous possédez un compte LDAP établissement ou un compte local dédié à l'application.", + 'db' => [ + // doit être activé pour que l'usurpation fonctionne (cf. Authentication/Storage/Db::read()) :-/ + 'enabled' => true, + ], + 'ldap' => [ + 'enabled' => true, + 'username' => XXX, + ], +], +``` + +## Paramétrer le comportement des messages d'erreur `config/autoload/local.php` + +Ce fichier permet de paramètrer l'affichage des différents messages d'erreur. + +```bash +user@serveur:/var/www/html$ mv config/autoload/local.php.dist config/autoload/local.php +``` + + +## Paramétrer les liens externes de l'application + +Ce fichier permet de paramètrer les liens externes notamment du pied de page + +```bash +user@serveur:/var/www/html$ mv config/autoload/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php +``` + +--- + +# Installation du modèle de données et données de base + +Lancez la commande suivante pour exécuter le processus d'installation : + +```bash +user@serveur:/var/www/html$ ./vendor/bin/laminas bddadmin:install +``` + +Après l'installation, vérifiez que les données ont été correctement insérées par la mise à jour. + +--- + +# Synchronisation des données de votre SIRH + +Configurez le fichier de synchronisation selon les besoins du projet et les fichiers de base de données sources comme +décrit dans [la documentation sur les connecteurs](connecteurs.md). + +Pour lancer la synchronisation, suivez lancer la commande suivante : +```bash +user@serveur:/var/www/html$ ./vendor/bin/laminas synchroniser +``` + +**N.B.** : Il est possible de réaliser la synchronisation d'une table individuellement via la commande +```bash +user@serveur:/var/www/html$ ./vendor/bin/laminas synchroniser SYNCHO_NAME +``` + +**N.B.** : Une bonne pratique est de paramètrer la synchronisation dans un cron. +Par exemple +```cron +0 7 * * 1-5 /var/www/html/vendor/bin/laminas synchroniser +``` + +--- + +# Paramètrages + +## Les paramètres de l'application + +Les paramètres de l'application sont déclarés et modifiable directement en back office dans la partie Administration > Paramètres + +## Les templates + +Les templates de l'application sont déclarés et modifiable directement en back office dans la partie Administration > Template + +--- + +# Troubleshooting + +## Aucune résolution de lien + +Pensez à vérifier que dans la déclaration du VirtualHost la close suivante soit bien déclarée : +``` +RewriteEngine On +``` + +## Configuration des paramètres PHP + +Vérifiez que les paramètres suivants dans PHP sont correctement configurés à 0 : + + session.cookie_lifetime + session.gc_maxlifetime + +Pour vérifier, consultez la configuration PHP : + +php -i | grep session.cookie_lifetime +php -i | grep session.gc_maxlifetime + +Modification des paramètres + +Si les valeurs ne sont pas correctes, modifiez le fichier /etc/php/8.2/fpm/php.ini et assurez-vous que les lignes +suivantes sont définies : + +session.cookie_lifetime = 0 +session.gc_maxlifetime = 0 + +Redémarrez le service PHP-FPM pour appliquer les modifications : + +systemctl restart php-fpm + + diff --git a/documentation/release/version_1_0/release.md b/documentation/release/version_1_0/release.md new file mode 100644 index 0000000000000000000000000000000000000000..b1c248e1a23e67eeb2f0f9bd76b6f3ac9344b31b --- /dev/null +++ b/documentation/release/version_1_0/release.md @@ -0,0 +1,44 @@ +## 1.0.6 (09/12/2024) + +* Ajout d'un privilège pour le menu Extractions +* Correction des comptages pour les inscrits au session +* Correction des tris des sessions + +## 1.0.5 (06/12/2024) + +* Transformation des émargements en un template +* Ajout de la notification de rappel au responsable qui n'aurait pas validé ou refusé la demande de formation +* Ajout de la possibilité de notifier les inscrit·es pour les prevenir d'un changement ou d'une demande particulière +* Poursuite des changements des tableaux de bord des gestionnaires +* Modification du comportement du bouton "changer état" des sessions pour ne pas provoquer de notification +* Ajout de rapport pour les opérations faisant évoluer les états des sessions + +## 1.0.4 (29/11/2024) + +* Amélioration des interfaces pour les gestionnaires de formations +* Ajout d'écrans et d'indicateurs pour la gestion des désistements +* Ajout de la possibilité de fournir un motif d'annulation d'une session (et de l'exploiter pour les notifications) +* Ajout d'export des personnes formées +* Ajout de blocage des agents déjà inscrit à des formations à la même date et du nombre d'inscrits +* Affichage du lieu (général) des formations sur les écrans listant les sessions +* Correction des problèmes de changement d'état des inscriptions à l'annulation d'une session + +## 1.0.3 (18/11/2024) + +* Ajout d'écran pour les référent·es de domaine de formation : insciptions et sessions +* Correction de la gestion des justifications et amélioration de leurs affichages +* Amélioration des écrans des valideur·euses et des responsables de structure +* Possibilité de révoquer les chaînes de validation remontant des SI (via les synchronisations) + +## 1.0.2 (13/11/2024) + +* Correction d'une mention oubliée à EMC2 dans le pied de page des documents générés +* Possibilité de contrôler du logo de l'application via un paramêtre +* Amélioration de la visibilité des inscrits à une formation et des privileges pour l'affichage des sessions +* Correction des destinataires de la notification de validation +* Ajout de filtrage sur les écrans des historiques de formations + +## 1.0.1 (06/11/2024) + +* Correction du bug tentant des référents mal déclarés +* Amélioration de divers affichages remontés comme non pratique par les premiers usagers diff --git a/readme.md b/readme.md index 76e0b64aab292270aa059c803ee9a12ea2661486..1f724b28d557982fe4aa10f8934c035f41343778 100644 --- a/readme.md +++ b/readme.md @@ -24,6 +24,7 @@ Vous retrouverez dans le fichier [connecteurs.md](documentation/docs/connecteurs ## Installation +Pour installer **Mes Formations**, vous pouvez suivre la procédure d'installation décrite dans le fichier [installation.md](documentation/docs/installation.md) # Changements @@ -35,56 +36,13 @@ Vous retrouverez dans le fichier [connecteurs.md](documentation/docs/connecteurs * Remise en place de l'import de chaine de validation via un CSV + interface associée * Ajout d'un menu de navigation rapide pour la page des plans de formation courants -## 1.0.6 (09/12/2024) - -* Ajout d'un privilège pour le menu Extractions -* Correction des comptages pour les inscrits au session -* Correction des tris des sessions - -## 1.0.5 (06/12/2024) - -* Transformation des émargements en un template -* Ajout de la notification de rappel au responsable qui n'aurait pas validé ou refusé la demande de formation -* Ajout de la possibilité de notifier les inscrit·es pour les prevenir d'un changement ou d'une demande particulière -* Poursuite des changements des tableaux de bord des gestionnaires -* Modification du comportement du bouton "changer état" des sessions pour ne pas provoquer de notification -* Ajout de rapport pour les opérations faisant évoluer les états des sessions - -## 1.0.4 (29/11/2024) - -* Amélioration des interfaces pour les gestionnaires de formations -* Ajout d'écrans et d'indicateurs pour la gestion des désistements -* Ajout de la possibilité de fournir un motif d'annulation d'une session (et de l'exploiter pour les notifications) -* Ajout d'export des personnes formées -* Ajout de blocage des agents déjà inscrit à des formations à la même date et du nombre d'inscrits -* Affichage du lieu (général) des formations sur les écrans listant les sessions -* Correction des problèmes de changement d'état des inscriptions à l'annulation d'une session - -## 1.0.3 (18/11/2024) - -* Ajout d'écran pour les référent·es de domaine de formation : insciptions et sessions -* Correction de la gestion des justifications et amélioration de leurs affichages -* Amélioration des écrans des valideur·euses et des responsables de structure -* Possibilité de révoquer les chaînes de validation remontant des SI (via les synchronisations) - -## 1.0.2 (13/11/2024) - -* Correction d'une mention oubliée à EMC2 dans le pied de page des documents générés -* Possibilité de contrôler du logo de l'application via un paramêtre -* Amélioration de la visibilité des inscrits à une formation et des privileges pour l'affichage des sessions -* Correction des destinataires de la notification de validation -* Ajout de filtrage sur les écrans des historiques de formations - -## 1.0.1 (06/11/2024) - -* Correction du bug tentant des référents mal déclarés -* Amélioration de divers affichages remontés comme non pratique par les premiers usagers ## 1.0.0 (30/10/2024) Première version livrant la partie *formation du plan de formation* + # Liens utiles - [Indicateurs](documentation/docs/indicateurs.md)