From d405a0e21c5428e6cca0f72f776aacb973d8590e Mon Sep 17 00:00:00 2001 From: Vichingo455 Date: Thu, 2 Oct 2025 11:54:59 +0200 Subject: [PATCH] troppe modifiche, non so cosa scrivere --- Dockerfile | 16 +++++---- README.md | 68 +++++++++++++++++++++++++++----------- docker/php/config.php | 41 +++++++++++++++++++++++ docker/php/db.php | 11 ------ htdocs/admin/classes.php | 1 - htdocs/admin/login.php | 23 +++++++------ htdocs/admin/password.php | 1 - htdocs/admin/subjects.php | 1 - htdocs/admin/timetable.php | 1 - htdocs/admin/users.php | 1 - htdocs/config/config.php | 49 ++++++++++++++++++++------- htdocs/docenti.php | 1 - htdocs/index.php | 1 - htdocs/laboratori.php | 1 - htdocs/lib/db.php | 9 ++--- htdocs/studenti.php | 1 - 16 files changed, 153 insertions(+), 73 deletions(-) create mode 100644 docker/php/config.php delete mode 100644 docker/php/db.php diff --git a/Dockerfile b/Dockerfile index cea2e25..5e96ec2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,16 @@ FROM php:8.2-apache RUN docker-php-ext-install mysqli pdo pdo_mysql COPY htdocs/ /var/www/html/ -COPY docker/php/db.php /var/www/html/db.php +COPY docker/php/config.php /var/www/html/config/config.php +RUN apt-get update && apt-get install -y \ + unzip \ + curl \ + git \ + && rm -rf /var/lib/apt/lists/* +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer --version +WORKDIR /var/www/html/admin +RUN composer install --no-interaction RUN chown -R www-data:www-data /var/www/html -# For now remove OpenID files from container, OpenID integration will come soon. -RUN rm /var/www/html/admin/login.php.keycloak -RUN rm /var/www/html/admin/logout.php.keycloak -RUN rm /var/www/html/admin/composer.json -RUN rm /var/www/html/admin/composer.lock RUN a2enmod rewrite EXPOSE 80 \ No newline at end of file diff --git a/README.md b/README.md index d9447ca..1fab314 100644 --- a/README.md +++ b/README.md @@ -53,28 +53,52 @@ C:\xampp\php\php.exe generate_hash.php VALUES ('admin', '$2y$10$IS9v8CJNJnRXslV1NWDSquAjJ0GgU1sm6spBmGp6mjTLiNApfGcQi'); ``` 5. **Importa il file ``schema.sql`` nel tuo database MySQL** -6. **Modifica il file ``db.php`` cambiando l'host, il nome utente e la password (necessari per la connessione al database MySQL)** -- Esempio: +6. **Modifica il file ``config/config.php`` inserendo i valori richiesti** +- Esempio file ``config/config.php``: ```php -$host = "localhost"; -$user = "utente"; -$pass = "password123"; + ``` -7. **(Opzionale) Modifica ``admin/login.php.keycloak`` e ``admin/logout.php.keycloak`` con i dati di un'istanza keycloak, in caso tu voglia usare Keycloak e non l'autenticazione integrata. Cancella poi i file ``login.php`` e ``logout.php`` e rinomina ``admin/login.php.keycloak`` in ``login.php`` e ``admin/logout.php.keycloak`` in ``logout.php``** -- Esempio (``login.php.keycloak``): -```php -$oidc = new OpenIDConnectClient( - 'https://keycloak.local/realms/master/', - 'orario', // Client ID Keycloak - 'abcdefghijklmnop' // Client secret Keycloak -); -$oidc->setRedirectURL('https://orario.local/admin/login.php'); // orario.local è il dominio base di questa piattaforma -``` -- Esempio (``logout.php.keycloak``): -```php -header('Location: https://keycloak.local/realms/master/protocol/openid-connect/logout?post_logout_redirect_uri=https://orario.local&client_id=orario'); -``` -8. **Apri ``http://localhost`` e goditi il sito** +7. **Apri ``http://localhost`` e goditi il sito** ## Installazione con Docker NOTA: L'installazione con Docker è in fase di sviluppo attivo, quindi potrebbe non funzionare. @@ -91,6 +115,10 @@ docker compose up -d --build ``` 3. Il container dovrebbe diventare disponibile su ``http://localhost:8080`` +### Per utenti Docker avanzati +Se sei un utente Docker avanzato e vuoi personalizzare puoi modificare la configurazione di docker nei file ``docker/php/config.php``, ``docker-compose.yml`` e ``Dockerfile`` per adattare tutto al tuo ambiente. +Per la maggior parte degli utenti consigliamo di usare la configurazione per Docker predefinita. + ## Licenza **Orario Scuola, Copyright (C) 2025 EmmeV.** diff --git a/docker/php/config.php b/docker/php/config.php new file mode 100644 index 0000000..4ff6a9c --- /dev/null +++ b/docker/php/config.php @@ -0,0 +1,41 @@ + \ No newline at end of file diff --git a/docker/php/db.php b/docker/php/db.php deleted file mode 100644 index 49c6d11..0000000 --- a/docker/php/db.php +++ /dev/null @@ -1,11 +0,0 @@ -connect_error) { - die("Connection failed: " . $conn->connect_error); -} -?> diff --git a/htdocs/admin/classes.php b/htdocs/admin/classes.php index 8c9275c..f55808e 100644 --- a/htdocs/admin/classes.php +++ b/htdocs/admin/classes.php @@ -2,7 +2,6 @@ session_start(); if (!isset($_SESSION['admin'])) { header("Location: login.php"); exit; } include("../lib/db.php"); -include("../config/config.php"); if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['name'])) { $name = $_POST['name']; diff --git a/htdocs/admin/login.php b/htdocs/admin/login.php index 3753708..b774176 100644 --- a/htdocs/admin/login.php +++ b/htdocs/admin/login.php @@ -1,9 +1,9 @@ prepare("SELECT * FROM admin WHERE username = ?"); @@ -20,8 +20,9 @@ if ($_SERVER["REQUEST_METHOD"] == "POST" && AUTH_TYPE === 'local') { } $error = "Credenziali non valide"; } -if (AUTH_TYPE === 'local') { - echo ``` +if (AUTH_TYPE == 'local') { +echo << Login Admin @@ -45,16 +46,16 @@ if (AUTH_TYPE === 'local') {
-
$error
"; ?> - +HTML; +if(isset($error)) echo "
$error
"; +echo <<

Copyright (C) 2025 EmmeV. - Released under GNU AGPL 3.0 License.

-```; + +HTML; } else if (AUTH_TYPE === 'keycloak') { - require 'vendor/autoload.php'; - use Jumbojett\OpenIDConnectClient; - session_start(); // Configura il client Keycloak $oidc = new OpenIDConnectClient( 'https://' + KEYCLOAK_DOMAIN + '/realms/' + KEYCLOAK_REALM + '/', diff --git a/htdocs/admin/password.php b/htdocs/admin/password.php index 2664c9c..635c797 100644 --- a/htdocs/admin/password.php +++ b/htdocs/admin/password.php @@ -1,7 +1,6 @@ '); // Host del database (ad esempio localhost) +} +if (!defined('DB_USER')) { + define('DB_USER', ''); // Utente del database (ad esempio orario) +} +if (!defined('DB_PASS')) { + define('DB_PASS', ''); // Password dell'utente specificato prima (ad esempio password123) +} +if (!defined('DB_NAME')) { + define('DB_NAME', 'school_timetable'); // Nome del database, non modificare se non sai cosa stai facendo. +} // Impostazioni sito generali -define('APP_NAME', 'Orario Scuola'); -define('YEAR', '2025/26'); +if (!defined('APP_NAME')) { + define('APP_NAME', 'Orario Scuola'); // Nome del sito +} +if (!defined('YEAR')) { + define('YEAR', '2025/26'); // Anno Scolastico Corrente +} // Impostazioni autenticazione dashboard amministrativa -define('AUTH_TYPE','local'); // Può essere keycloak o local (integrata) -define('KEYCLOAK_DOMAIN',''); -define('KEYCLOAK_REALM',''); -define('KEYCLOAK_CLIENT_ID',''); -define('KEYCLOAK_CLIENT_SECRET',''); -define('APP_DOMAIN',''); +if (!defined('AUTH_TYPE')) { + define('AUTH_TYPE','local'); // Può essere keycloak o local (integrata) +} +// Impostazioni autenticazione via Keycloak (facoltative se AUTH_TYPE sta impostato su local) +if (!defined('KEYCLOAK_DOMAIN')) { + define('KEYCLOAK_DOMAIN',''); // Dominio di Keycloak (ad esempio auth.yourdomain.com) +} +if (!defined('KEYCLOAK_REALM')) { + define('KEYCLOAK_REALM',''); // Realm di Keycloak (ad esempio master) +} +if (!defined('KEYCLOAK_CLIENT_ID')) { + define('KEYCLOAK_CLIENT_ID',''); // Client ID per Keycloak (ad esempio orario) +} +if (!defined('KEYCLOAK_CLIENT_SECRET')) { + define('KEYCLOAK_CLIENT_SECRET',''); // Client Secret per Keycloak (ad esempio abcdefghijklm) +} +if (!defined('APP_DOMAIN')) { + define('APP_DOMAIN',''); // Dominio del sito (ad esempio orario.yourdomain.com) +} ?> \ No newline at end of file diff --git a/htdocs/docenti.php b/htdocs/docenti.php index 47458b3..a6d4cd3 100644 --- a/htdocs/docenti.php +++ b/htdocs/docenti.php @@ -1,6 +1,5 @@ diff --git a/htdocs/laboratori.php b/htdocs/laboratori.php index d7643a5..f7f3232 100644 --- a/htdocs/laboratori.php +++ b/htdocs/laboratori.php @@ -1,6 +1,5 @@ "; -$user = ""; -$pass = ""; -$dbname = "school_timetable"; +include_once __DIR__ . '/../config/config.php'; +$host = DB_HOST; +$user = DB_USER; +$pass = DB_PASS; +$dbname = DB_NAME; $conn = new mysqli($host, $user, $pass, $dbname); if ($conn->connect_error) { diff --git a/htdocs/studenti.php b/htdocs/studenti.php index aba1c56..d50b2f5 100644 --- a/htdocs/studenti.php +++ b/htdocs/studenti.php @@ -1,6 +1,5 @@ query("SELECT * FROM classes WHERE id=$class_id")->fetch_assoc(); $days = ["Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"];