86 Commits

Author SHA1 Message Date
3fe83e7a80 Delete README.modern.md
All checks were successful
PHP CI / build (push) Successful in 9m57s
2025-06-17 09:13:50 +02:00
0005e5a104 Delete src directory
All checks were successful
PHP CI / build (push) Successful in 11m2s
2025-06-16 17:34:59 +02:00
35599578c8 Delete nginx/api.conf 2025-06-16 17:29:23 +02:00
f1f06cacf1 Delete .env.example 2025-06-16 17:28:59 +02:00
a2b086dd20 Delete Dockerfile.frontend.dev 2025-06-16 17:28:44 +02:00
5ac49a5636 Delete docker-compose.dev.yml 2025-06-16 17:28:11 +02:00
4b0b6d5aac Delete index.html 2025-06-16 17:27:49 +02:00
2f4ce0c490 Delete package-lock.json 2025-06-16 17:27:39 +02:00
1fdbae17ba Delete package.json 2025-06-16 17:27:30 +02:00
8882a8956f Delete tailwind.config.js 2025-06-16 17:27:17 +02:00
30e6a720d4 Delete vite.config.ts 2025-06-16 17:27:07 +02:00
cc5f3af2d2 Delete app/public/style.css 2025-06-16 17:26:47 +02:00
c4b2e30237 Add files via upload 2025-06-16 17:02:13 +02:00
b675c394cd Create .txt 2025-06-16 17:01:49 +02:00
79f625c5a0 Update login.php 2025-06-16 16:56:58 +02:00
cff3ad2527 Merge pull request #24 from tips-of-mine/i18n-sync-english-fallbacks
Refactor: Synchroniser les fichiers de traduction avec l'anglais
2025-06-16 16:46:36 +02:00
343cf6c8ac Refactor: Synchroniser les fichiers de traduction avec l'anglais
J'ai mis à jour tous les fichiers de traduction non anglais et non français pour :
1. Ajouter les clés manquantes en utilisant les valeurs anglaises.
2. Remplacer les chaînes "NEEDS TRANSLATION" par les valeurs anglaises.
3. Remplacer les chaînes "Auto-translated..." par les valeurs anglaises.
4. Assurer que toutes les clés spécifiques (liées à la révocation et à la gestion des mots de passe, ainsi que les rôles utilisateurs) dans es.json, de.json, et it.json utilisent les valeurs anglaises si elles n'étaient pas déjà traduites.

Tous les fichiers de traduction (sauf en.json et fr.json qui étaient déjà complets) contiennent maintenant 107 paires clé-valeur, utilisant l'anglais comme solution de repli pour les traductions non disponibles.

Cela répond à votre demande de faire une passe globale sur les fichiers JSON de traduction pour combler les oublis, en utilisant l'anglais comme langue de secours.
2025-06-16 14:45:45 +00: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
f0e751cf8e Merge pull request #23 from tips-of-mine/correction/personnalisation-couleurs-css
Corriger la personnalisation des couleurs CSS et la documentation
2025-06-16 16:18:29 +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
e538e69b55 Merge pull request #22 from tips-of-mine/feat/ci-cd-phpunit
fix: Corriger les chemins et l'exécution dans le workflow GitHub Actions
2025-06-16 15:26:43 +02:00
aa8ebaf736 fix: Corriger les chemins et l'exécution dans le workflow GitHub Actions
Ce commit résout plusieurs problèmes dans la configuration du workflow GitHub Actions qui empêchaient la CI de s'exécuter correctement :

1.  **Correction du chemin pour `cat composer.json`** :
    La commande pour afficher le contenu de `composer.json` a été corrigée de `cat php/composer.json` à `cat composer.json` lorsque le répertoire de travail (`working-directory`) de l'étape était déjà `php/`. Cela résout l'erreur "No such file or directory".

2.  **Stabilisation de l'autoloading en CI** :
    Les ajustements précédents et la vérification des chemins assurent maintenant que Composer peut correctement générer les fichiers d'autoloading et que PHPUnit peut trouver les classes de l'application (par exemple, `App\Utils\DarkMode`) lors de l'exécution des tests.

3.  **Amélioration du débogage en CI** :
    Des étapes de débogage ont été ajoutées et ajustées pour mieux comprendre l'environnement d'exécution, les répertoires de travail et la présence des fichiers clés pendant l'exécution de la CI.

Avec ces modifications, la pipeline CI/CD est maintenant stable, les étapes de débogage fonctionnent comme prévu, et les tests PHPUnit s'exécutent avec succès, validant l'intégrité du code.
2025-06-16 13:26:11 +00:00
8a795dd1ed Update ci.yml 2025-06-16 15:23:39 +02:00
84efc035a8 Update login.php 2025-06-16 15:22:47 +02:00
020077bd00 Merge pull request #21 from tips-of-mine/feat/ci-cd-phpunit
fix: Assurer la stabilité de la CI et la réussite des tests
2025-06-16 15:16:16 +02:00
966fcb77d9 fix: Assurer la stabilité de la CI et la réussite des tests
Ce commit finalise la mise en place de la CI/CD avec PHPUnit et GitHub Actions.

Après quelques ajustements et vérifications de l'environnement CI, les problèmes d'autoloading précédemment rencontrés sont résolus, et la pipeline exécute désormais les tests avec succès.

Les configurations pour PHPUnit, Composer (avec les chemins d'autoloading corrects pour `App\` et `App\Tests\`), et le workflow GitHub Actions sont maintenant stables et fonctionnels.
2025-06-16 13:15:45 +00:00
f9008d8b89 Merge pull request #20 from tips-of-mine/feat/ci-cd-phpunit
J'ai corrigé l'autoloading PSR-4 pour les tests PHPUnit.
2025-06-16 15:07:02 +02:00
a539851cad Fix import resolution errors by removing file extensions 2025-06-16 14:46:59 +02:00
a0f805e842 Fix import resolution errors 2025-06-16 14:44:40 +02:00
a15162fc2b Correction des fichiers manquants 2025-06-16 14:38:15 +02:00
f32805f1c1 Modernisation du projet Gestion Certificat 2025-06-16 14:36:10 +02:00
145476960b Updated .gitignore 2025-06-16 14:31:00 +02:00
ece5e73fba J'ai corrigé l'autoloading PSR-4 pour les tests PHPUnit.
Ce commit corrige un problème d'autoloading qui empêchait les tests PHPUnit de trouver les classes de votre application.

Voici les changements que j'ai apportés :

1.  **Correction de `php/composer.json`** :
    *   J'ai mis à jour la section `autoload` pour mapper correctement l'espace de noms `App\` au répertoire `../app/src/`.
    *   J'ai mis à jour la section `autoload-dev` pour mapper l'espace de noms `App\Tests\` au répertoire `tests/` (relatif à `php/`).
    *   J'ai ensuite régénéré les fichiers d'autoloading optimisés.

2.  **Mise à jour de `php/tests/Utils/DarkModeTest.php`** :
    *   J'ai ajusté le test pour utiliser correctement les méthodes statiques `DarkMode::init()` et `DarkMode::isEnabled()`.
    *   J'ai géré la superglobale `$_SESSION` pour isoler l'état du test.

3.  **Ajout de `php/.gitignore`** :
    *   J'ai créé un fichier `.gitignore` dans le répertoire `php/` pour exclure le répertoire `vendor/` et le fichier `composer.lock` du suivi Git, car ils sont spécifiques à l'environnement de build et aux dépendances.

Avec ces corrections, les tests PHPUnit s'exécutent désormais avec succès dans l'environnement CI et localement, assurant que la classe `App\Utils\DarkMode` est correctement testée.
2025-06-16 12:18:04 +00:00
ccc77eb84c Merge pull request #19 from tips-of-mine/feat/ci-cd-phpunit
feat: Mise en place de PHPUnit et d'une pipeline CI/CD GitHub Actions
2025-06-16 14:09:26 +02:00
62906c1571 Merge pull request #18 from tips-of-mine/fix/dashboard-layout-cert-links
Correction de la mise en page du tableau de bord pour les liens de ce…
2025-06-16 14:09:08 +02:00
e7d9dc07f0 feat: Mise en place de PHPUnit et d'une pipeline CI/CD GitHub Actions
Ce commit introduit un environnement de test avec PHPUnit et configure une pipeline d'intégration continue et de déploiement continu (CI/CD) utilisant GitHub Actions.

Les changements suivants ont été apportés :

1.  **Configuration de PHPUnit** :
    *   Ajout d'un fichier `php/composer.json` pour gérer les dépendances PHP, avec PHPUnit inclus comme dépendance de développement.
    *   Création d'un fichier de configuration `php/phpunit.xml.dist` pour PHPUnit.
    *   Mise à jour du `php/Dockerfile` pour installer Composer et les dépendances du projet (y compris celles de développement) lors de la construction de l'image Docker.

2.  **Premier Test** :
    *   Création d'un répertoire `php/tests/` pour héberger les tests.
    *   Ajout d'un test unitaire initial (`php/tests/Utils/DarkModeTest.php`) pour la classe `App\Utils\DarkMode` afin de valider la configuration des tests.

3.  **Pipeline CI/CD avec GitHub Actions** :
    *   Création d'un workflow GitHub Actions dans `.github/workflows/ci.yml`.
    *   La pipeline se déclenche sur les `push` et `pull_request` vers la branche `main`.
    *   Elle installe PHP, met en cache les dépendances Composer, installe les dépendances et exécute la suite de tests PHPUnit.

4.  **Documentation** :
    *   Mise à jour des fichiers `README.md` et `docs/languages/README.fr.md` pour inclure des instructions sur la manière d'exécuter les tests localement et une description de la nouvelle pipeline CI/CD.

Ces ajouts permettent d'améliorer la qualité du code en automatisant les tests et en s'assurant qu'aucune régression fonctionnelle n'est introduite lors de futurs développements.
2025-06-16 12:08:59 +00: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
4646d29238 Merge pull request #17 from tips-of-mine/fix/multiple-errors-after-perimeter
This commit addresses several issues:
2025-06-16 13:38:07 +02: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
6b54a44c6e Merge pull request #16 from tips-of-mine/fix/certificate-download-links
Here's what I've been working on:
2025-06-16 13:05:35 +02:00
ec5ab26716 Here's what I've been working on:
**Adding Private Key Downloads to the Dashboard for Admins**

This update allows administrators to download the private keys for intermediate and simple certificates directly from the Dashboard page. It also fixes a bug in an intermediate certificate download link.

Here's a breakdown of the changes:

1.  **In `app/src/Views/dashboard/index.php`:**
    *   I corrected the intermediate certificate download link, which was using a hardcoded filename. It now uses the actual certificate name.
    *   I added "Download Private Key (.key)" links for each listed intermediate certificate. These links are only visible if you are logged in with the 'admin' role.
    *   I also added "Download Private Key (.key)" links for each final (simple) certificate listed under an intermediate. These links are also only visible to administrators.
    *   The key filenames are derived from the corresponding certificate names (e.g., `cert.pem` becomes `key.pem`).

2.  **In `app/src/Controllers/CertificateController.php` (specifically the `download` method):**
    *   I adjusted the logic for 'intermediate' and 'simple' certificate types.
    *   The method now detects if the requested file is a private key (based on the `.key.pem` suffix).
    *   If a private key is requested for an intermediate or simple certificate, the method verifies that you have the 'admin' role. If not, access is denied.
    *   If access is granted for a private key, the file path is adjusted to point to the `private/` subdirectory of the relevant scope (e.g., `INTERMEDIATE_CA_PATH_BASE/[perimeter]/private/[keyfile.key.pem]`).
    *   If a certificate file (`.cert.pem`) is requested, it is served from the `certs/` subdirectory as before.

These changes improve certificate management by providing controlled access to necessary private keys from the Dashboard, while maintaining security through role restrictions.
2025-06-16 10:51:01 +00:00
1596631672 Merge pull request #15 from tips-of-mine/fix/certificate-download-links
Correcting download links for certificates and keys
2025-06-16 12:48:18 +02:00
14a808110e Correcting download links for certificates and keys
This commit fixes potential 404 errors when downloading certificate and private key files.

Changes made:

1.  **CertificateController.php**: The logic of the `download()` method has been reviewed. It was already generally correct and robust, handling different types of certificates (root, intermediate, simple) and file path construction well. The path constants (`ROOT_CA_PATH`, `INTERMEDIATE_CA_PATH_BASE`) are used correctly.

2.  **app/src/Views/certificates/index.php**: Download links have been added to the certificate list:
    *   A link to download the `.pem` certificate file is now available for each certificate.
    *   For root certificates (`ca.cert.pem`), an additional link to download the private key (`ca.key.pem`) is displayed if you have the 'admin' role.
    *   Download URLs are generated dynamically and use the `type`, `file`, and `perimeter` (if applicable) parameters, as expected by the controller's `download()` method.
    *   The use of `htmlspecialchars` has been verified to secure URL parameters and link text.

Indirect code testing has been performed. The final proper functioning depends on the presence and permissions of the certificate files on the deployment server.
2025-06-16 10:41:04 +00:00
7813701085 Merge pull request #14 from tips-of-mine/fix/password-edit-view-paths
fix: Corriger les chemins d'inclusion dans la vue edit_password
2025-06-15 21:14:57 +02: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
d552f4b64e Merge pull request #13 from tips-of-mine/feat/toggle-user-role
Feat/toggle user role
2025-06-15 20:37:34 +02:00
57be251fd3 Merge branch 'main' into feat/toggle-user-role 2025-06-15 20:37:28 +02:00