21 Commits

Author SHA1 Message Date
cc5f3af2d2 Delete app/public/style.css 2025-06-16 17:26:47 +02:00
22f0644aa7 Update style.css 2025-06-16 16:27:32 +02:00
e929ba4011 Update style.css 2025-06-16 16:19:49 +02:00
15e417e766 Update style.css 2025-06-16 16:19:33 +02:00
f21a4b3655 Corriger la personnalisation des couleurs CSS et la documentation
Cette modification ajuste les améliorations précédentes pour la personnalisation
des couleurs en se concentrant uniquement sur les fichiers `app/public/css/style.css`
et `app/public/css/dark-mode.css`, conformément à vos retours.

Changements apportés :

1.  Fichier `src/styles/globals.css` :
    - Restauré à son état d'origine (suppression du commentaire précédemment ajouté).

2.  Fichier `app/public/css/style.css`:
    - Un commentaire a été ajouté en haut du fichier pour expliquer comment
      personnaliser les couleurs en surchargeant les variables CSS.
    - Plusieurs couleurs précédemment codées en dur ont été remplacées par
      des variables CSS. Cela inclut les styles pour :
        - `.logout-button`
        - `.success-message`, `.error-message` (fonds et bordures)
        - `tr:hover` (survol des lignes de tableau)
        - `.certificate-entry` (bordure)
        - `.app-footer` (fond et texte)
        - `tr.revoked-cert` (texte, fond, survol)

3.  Fichier `app/public/css/dark-mode.css`:
    - Les nouvelles variables CSS introduites dans `style.css` ont été
      définies avec des valeurs appropriées pour le thème sombre.
    - La valeur alpha du `box-shadow` pour les inputs en focus a été
      corrigée pour correspondre à la valeur d'origine (`0.25`).
    - Les blocs de style spécifiques pour `.app-footer` et `tr.revoked-cert`
      (et son `:hover`) qui dupliquaient la gestion des couleurs via les
      variables n'ont pas été réintroduits.

Ces modifications visent à rendre la personnalisation des thèmes plus
robuste et mieux documentée pour la partie CSS classique de l'application.
2025-06-16 14:18:14 +00:00
c937f8f4c9 Update style.css 2025-06-16 16:02:02 +02:00
f32805f1c1 Modernisation du projet Gestion Certificat 2025-06-16 14:36:10 +02:00
e6e517011b Correction de la mise en page du tableau de bord pour les liens de certificats
Cette modification corrige la mise en page des certificats intermédiaires et finaux sur le tableau de bord pour s'assurer que leurs informations et liens de téléchargement respectifs s'affichent sur une seule ligne, de manière cohérente avec les certificats racine.

Modifications apportées :

1.  **HTML (`app/src/Views/dashboard/index.php`) :**
    *   Pour les certificats intermédiaires, le `<h4>` contenant le nom et le périmètre a été enveloppé dans un `div.certificate-info`. Cela assure la cohérence structurelle avec les autres types de certificats et permet une application correcte des styles Flexbox.

2.  **CSS (`app/public/css/style.css`) :**
    *   Ajout d'une règle `.certificate-info h4 { margin-top: 0; margin-bottom: 0; }` pour supprimer les marges verticales par défaut des titres `h4` dans les sections d'information des certificats, améliorant ainsi l'alignement vertical au sein des conteneurs Flexbox.
    *   Les styles Flexbox existants pour `.certificate-entry`, `.certificate-info`, et `.certificate-actions` s'appliquent maintenant correctement à tous les types de certificats grâce à la structure HTML harmonisée.

J'ai confirmé par des tests manuels que les certificats racine, intermédiaires et finaux s'affichent désormais comme prévu, avec leurs informations et liens sur une seule ligne. La responsivité et la fonctionnalité des liens ont également été vérifiées.
2025-06-16 11:55:42 +00:00
d4516e87ae This commit addresses several issues:
1.  **`intermediate_cert_name` unique constraint violation**:
    When creating a perimeter, the intermediate certificate name (`intermediate_cert_name`) stored in the `functional_perimeters` table was always `"intermediate.cert.pem"`. This caused a duplicate error if a unique constraint existed on this column.
    *   Fixed in `PerimeterController.php` by using `$perimeterName . "_intermediate.cert.pem"` as the value for `intermediate_cert_name`, ensuring uniqueness. The physical file name remains `intermediate.cert.pem` in the perimeter's subdirectory.

2.  **`Undefined variable $userRole` warning**:
    On the page listing perimeters (`app/src/Views/perimeters/index.php`), the `$userRole` variable was not defined by the controller.
    *   Fixed in `PerimeterController.php` (method `index()`) by initializing `$userRole = $this->authService->getUserRole();`.

3.  **SQL error `Unknown column 'common_name'` during initialization**:
    During the application initialization process (if no user or root certificate exists), an attempt to insert into the `certificates` table included a `common_name` column that does not exist.
    *   Fixed in `app/public/index.php` by removing the `common_name` column and its value from the insert query for the root certificate.

These corrections improve the robustness of perimeter creation and make the application initialization process more reliable.
2025-06-16 11:36:47 +00:00
3ec2eda49d fix: Corriger les chemins d'inclusion dans la vue edit_password
La vue `app/src/Views/users/edit_password.php` utilisait des chemins relatifs incorrects pour inclure `header.php` et `footer.php`, provoquant une erreur fatale.

Cette correction remplace les chemins relatifs par des chemins absolus en utilisant la constante `APP_ROOT_DIR`.

Modifications :
- Mise à jour des `require_once` pour `header.php` et `footer.php` dans `app/src/Views/users/edit_password.php` pour utiliser `APP_ROOT_DIR`.
- Ajout de commentaires en début de fichier pour lister les variables attendues du contrôleur.
- Uniformisation de l'affichage des messages d'erreur via la variable `$errorMessage`.
2025-06-15 19:13:50 +00:00
326bc59be5 feat: Ajout de la fonctionnalité de modification de rôle utilisateur
J'ai implémenté la possibilité pour les administrateurs de changer le rôle des utilisateurs entre 'user' et 'admin' directement depuis la page de liste des utilisateurs.

Changements apportés :
- Ajout d'une méthode `toggleAdminRole` dans `UserController.php` pour gérer la logique de changement de rôle.
- Intégration de vérifications de sécurité pour empêcher la modification du rôle de l'admin principal, de votre propre rôle, ou la suppression du dernier rôle admin.
- Ajout d'une route POST `/users/toggle-admin` pour cette nouvelle fonctionnalité.
- Modification de la vue `app/src/Views/users/index.php` pour afficher les boutons de changement de rôle ("Passer Admin" / "Retirer Admin") avec une confirmation JavaScript.
- Mise à jour du fichier de langue `fr.json` avec les nouvelles chaînes de caractères nécessaires.
- Journalisation des actions de modification de rôle.

Il est recommandé de tester manuellement cette fonctionnalité pour s'assurer qu'elle fonctionne comme prévu dans tous les scénarios.
2025-06-15 18:13:37 +00:00
72d100d5a4 Merge pull request #10 from tips-of-mine/fix/functional-perimeter-creation
Fix/functional perimeter creation
2025-06-15 19:41:34 +02:00
32aced02d6 Fix: Résolution des erreurs de création de périmètre fonctionnel et de certificats.
Ce commit adresse plusieurs problèmes qui empêchaient la création correcte des périmètres fonctionnels et de leurs certificats intermédiaires associés.

Modifications apportées :

1.  **Scripts Shell (create_root_cert.sh, create_intermediate_cert.sh):**
    *   Correction des chemins de copie pour les fichiers de configuration OpenSSL (`root-openssl.conf`, `intermediate-openssl.conf`) pour utiliser `/opt/scripts/configs/` comme source correcte dans l'environnement d'exécution.
    *   Ajout de `set -e` au début des scripts pour un arrêt immédiat en cas d'erreur.
    *   Modification de `scripts/configs/root-openssl.conf` pour que sa directive `dir` pointe vers `/opt/tls/root`, assurant que la CA Racine trouve correctement ses propres fichiers.
    *   Modification de `scripts/create_intermediate_cert.sh` pour que la directive `dir` dans les fichiers `openssl.cnf` des CA intermédiaires soit dynamiquement ajustée au chemin spécifique du périmètre (ex: `/opt/tls/intermediate/nom_perimetre`).
    *   `create_intermediate_cert.sh` accepte maintenant `ROOT_DOMAIN` comme argument et l'utilise pour rendre uniques les CN des certificats intermédiaires et OCSP (ex: `nom_perimetre.intermediate.example.com`).
    *   Correction des chemins de sortie pour la CRL et les fichiers OCSP (clé privée et CSR) dans `create_intermediate_cert.sh` pour utiliser `$INTERMEDIATE_CA_DIR` comme base.

2.  **Contrôleur PHP (PerimeterController.php):**
    *   Extraction dynamique du `ROOT_DOMAIN` à partir du CN du certificat de la CA Racine existante et passage de cette valeur au script `create_intermediate_cert.sh`.
    *   Utilisation d'une expression régulière plus robuste pour l'extraction du `ROOT_DOMAIN`.
    *   Passage des variables d'environnement `OCSP_URL` (depuis la configuration PHP) et `SAN` (vide) au script `create_intermediate_cert.sh` pour éviter les erreurs de "variable has no value" dans OpenSSL.

3.  **Initialisation (app/public/index.php):**
    *   Ajout de logs de débogage et d'une gestion d'erreur défensive pour s'assurer que `$_SESSION['init_root_domain']` est correctement défini avant d'être utilisé pour créer la CA Racine.

Ces changements combinés résolvent le problème initial de création de certificat intermédiaire et plusieurs autres problèmes découverts, menant à une création réussie des périmètres fonctionnels.
2025-06-15 17:12:51 +00:00
19600862f0 Merge pull request #9 from tips-of-mine/feat/certificate-download
Implémenter la fonctionnalité de téléchargement des certificats depui…
2025-06-15 14:40:16 +02:00
16458278b9 Implémenter la fonctionnalité de téléchargement des certificats depuis le dashboard
Ce commit introduit la possibilité pour vous de télécharger les fichiers de certificats (racine, intermédiaire, final) et la clé privée du certificat racine (administrateurs uniquement) directement depuis la page du tableau de bord.

Changements inclus :
- Ajout d'une méthode `download()` dans `CertificateController` pour gérer la logique de téléchargement sécurisé des fichiers.
- Ajout d'une nouvelle route `GET /certificates/download`.
- Correction et standardisation des liens de téléchargement dans la vue du dashboard pour assurer la transmission correcte des paramètres (type de certificat, nom de fichier, périmètre).
- La méthode de téléchargement inclut la journalisation des tentatives et des erreurs, ainsi que la gestion des permissions pour la clé privée racine.
2025-06-15 12:23:58 +00:00
44bcba150f fix: Corrige la redirection après l'initialisation de l'application
- Ajoute session_write_close() avant la redirection pour assurer la sauvegarde des modifications de session (par exemple, la suppression des identifiants d'initialisation).
- Remplace la redirection par en-tête HTTP `Refresh` par une redirection JavaScript côté client. Cela améliore la fiabilité de la redirection, en particulier lorsque du contenu HTML a déjà été envoyé ou dans certains environnements serveur.

Ces modifications résolvent un problème où la page pouvait rester bloquée sur le message "Redirection vers la page de connexion dans 5 secondes..." sans effectuer la redirection.
2025-06-15 11:32:32 +00:00
5d0990b1d6 feat: Demande du mot de passe admin et du ROOT_DOMAIN à l'initialisation
Modifie le processus d'initialisation de l'application :
- Lors du premier lancement, un formulaire vous demande maintenant de saisir le mot de passe souhaité pour le compte administrateur initial et le ROOT_DOMAIN à utiliser pour le certificat CA.
- Ces informations sont temporairement stockées en session.
- Le script `create_root_cert.sh` a été modifié pour accepter le ROOT_DOMAIN en argument et l'utilise pour générer le CN du certificat racine.
- Le mot de passe fourni est utilisé pour créer le premier utilisateur administrateur.
- Les variables de session contenant ces informations sont nettoyées après la fin du processus d'initialisation.

Cela améliore la sécurité en évitant un mot de passe par défaut codé en dur et permet une configuration flexible du domaine du certificat racine dès le départ.
2025-06-15 09:34:10 +00:00
0e9e41eb80 Style: Améliore le contraste des couleurs en mode clair
Ajuste plusieurs variables CSS dans style.css pour augmenter
la lisibilité en mode clair, en réponse à vos retours.

Modifications principales :
- Assombrit --header-bg et --table-header-bg pour un meilleur contraste
  avec le texte blanc.
- Ajuste --button-primary-bg, --button-primary-hover-bg,
  --button-secondary-bg, et --button-secondary-hover-bg
  pour améliorer la lisibilité du texte blanc sur les boutons.
2025-06-14 18:36:16 +00:00
98e931e3f9 Fix: Corrige la configuration Docker et les permissions
Ce commit apporte les modifications suivantes pour résoudre les problèmes
de chargement des fichiers CSS et potentiellement de rendu des pages :

- docker-compose.yml:
    - Modifie le montage du volume pour le service nginx de
      `./app/public:/var/www/html:ro` à `./app:/var/www/html:ro`
      pour s'aligner avec la directive `root /var/www/html/public;`
      dans la configuration Nginx.
    - Met à jour la commande de démarrage du service php-fpm pour
      appliquer `chown -R www-data:www-data` et `chmod -R 775`
      à l'ensemble du répertoire `/var/www/html` afin d'assurer
      les bonnes permissions pour les fichiers de l'application.

- Supprime le fichier CSS dupliqué `app/public/dark-mode.css`.
  Le fichier correct `app/public/css/dark-mode.css` est conservé.

- Conserve une ligne de débogage temporaire dans `app/src/Views/shared/header.php`
  pour aider à diagnostiquer les problèmes de mode sombre.
2025-06-14 17:57:08 +00:00
310051fb4d Refactor: Vérification des routes et suppression des fichiers .bak
Ce commit inclut les actions suivantes :

- Vérification de la syntaxe des définitions de routes dans app/public/index.php. Aucune correction n'a été nécessaire car la potentielle erreur 'AuthController@@logout' était déjà corrigée.
- Suppression des fichiers .bak obsolètes :
    - app/public/index.php.bak
    - app/public/ocsp_responder.php.bak
    - app/src/Services/LanguageService.php.bak

Ces changements contribuent à la propreté et à la maintenabilité du code.
2025-06-14 17:09:25 +00:00
b17c666c5a Add files via upload 2025-06-14 19:03:54 +02:00