troppe modifiche, non so cosa scrivere
This commit is contained in:
16
Dockerfile
16
Dockerfile
@@ -1,12 +1,16 @@
|
|||||||
FROM php:8.2-apache
|
FROM php:8.2-apache
|
||||||
RUN docker-php-ext-install mysqli pdo pdo_mysql
|
RUN docker-php-ext-install mysqli pdo pdo_mysql
|
||||||
COPY htdocs/ /var/www/html/
|
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
|
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
|
RUN a2enmod rewrite
|
||||||
EXPOSE 80
|
EXPOSE 80
|
68
README.md
68
README.md
@@ -53,28 +53,52 @@ C:\xampp\php\php.exe generate_hash.php <password>
|
|||||||
VALUES ('admin', '$2y$10$IS9v8CJNJnRXslV1NWDSquAjJ0GgU1sm6spBmGp6mjTLiNApfGcQi');
|
VALUES ('admin', '$2y$10$IS9v8CJNJnRXslV1NWDSquAjJ0GgU1sm6spBmGp6mjTLiNApfGcQi');
|
||||||
```
|
```
|
||||||
5. **Importa il file ``schema.sql`` nel tuo database MySQL**
|
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)**
|
6. **Modifica il file ``config/config.php`` inserendo i valori richiesti**
|
||||||
- Esempio:
|
- Esempio file ``config/config.php``:
|
||||||
```php
|
```php
|
||||||
$host = "localhost";
|
<?php
|
||||||
$user = "utente";
|
// Impostazioni Database
|
||||||
$pass = "password123";
|
if (!defined('DB_HOST')) {
|
||||||
|
define('DB_HOST', 'db');
|
||||||
|
}
|
||||||
|
if (!defined('DB_USER')) {
|
||||||
|
define('DB_USER', 'orario');
|
||||||
|
}
|
||||||
|
if (!defined('DB_PASS')) {
|
||||||
|
define('DB_PASS', 'orario');
|
||||||
|
}
|
||||||
|
if (!defined('DB_NAME')) {
|
||||||
|
define('DB_NAME', 'school_timetable');
|
||||||
|
}
|
||||||
|
// Impostazioni sito generali
|
||||||
|
if (!defined('APP_NAME')) {
|
||||||
|
define('APP_NAME', 'Orario Scuola');
|
||||||
|
}
|
||||||
|
if (!defined('YEAR')) {
|
||||||
|
define('YEAR', '2025/26');
|
||||||
|
}
|
||||||
|
// Impostazioni autenticazione dashboard amministrativa
|
||||||
|
if (!defined('AUTH_TYPE')) {
|
||||||
|
define('AUTH_TYPE','local'); // Può essere keycloak o local (integrata)
|
||||||
|
}
|
||||||
|
if (!defined('KEYCLOAK_DOMAIN')) {
|
||||||
|
define('KEYCLOAK_DOMAIN','');
|
||||||
|
}
|
||||||
|
if (!defined('KEYCLOAK_REALM')) {
|
||||||
|
define('KEYCLOAK_REALM','');
|
||||||
|
}
|
||||||
|
if (!defined('KEYCLOAK_CLIENT_ID')) {
|
||||||
|
define('KEYCLOAK_CLIENT_ID','');
|
||||||
|
}
|
||||||
|
if (!defined('KEYCLOAK_CLIENT_SECRET')) {
|
||||||
|
define('KEYCLOAK_CLIENT_SECRET','');
|
||||||
|
}
|
||||||
|
if (!defined('APP_DOMAIN')) {
|
||||||
|
define('APP_DOMAIN','');
|
||||||
|
}
|
||||||
|
?>
|
||||||
```
|
```
|
||||||
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``**
|
7. **Apri ``http://localhost`` e goditi il sito**
|
||||||
- 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**
|
|
||||||
|
|
||||||
## Installazione con Docker
|
## Installazione con Docker
|
||||||
NOTA: L'installazione con Docker è in fase di sviluppo attivo, quindi potrebbe non funzionare.
|
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``
|
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
|
## Licenza
|
||||||
**Orario Scuola, Copyright (C) 2025 EmmeV.**
|
**Orario Scuola, Copyright (C) 2025 EmmeV.**
|
||||||
|
|
||||||
|
41
docker/php/config.php
Normal file
41
docker/php/config.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
// Impostazioni Database
|
||||||
|
if (!defined('DB_HOST')) {
|
||||||
|
define('DB_HOST', 'db');
|
||||||
|
}
|
||||||
|
if (!defined('DB_USER')) {
|
||||||
|
define('DB_USER', 'orario');
|
||||||
|
}
|
||||||
|
if (!defined('DB_PASS')) {
|
||||||
|
define('DB_PASS', 'orario');
|
||||||
|
}
|
||||||
|
if (!defined('DB_NAME')) {
|
||||||
|
define('DB_NAME', 'school_timetable');
|
||||||
|
}
|
||||||
|
// Impostazioni sito generali
|
||||||
|
if (!defined('APP_NAME')) {
|
||||||
|
define('APP_NAME', 'Orario Scuola');
|
||||||
|
}
|
||||||
|
if (!defined('YEAR')) {
|
||||||
|
define('YEAR', '2025/26');
|
||||||
|
}
|
||||||
|
// Impostazioni autenticazione dashboard amministrativa
|
||||||
|
if (!defined('AUTH_TYPE')) {
|
||||||
|
define('AUTH_TYPE','local'); // Può essere keycloak o local (integrata)
|
||||||
|
}
|
||||||
|
if (!defined('KEYCLOAK_DOMAIN')) {
|
||||||
|
define('KEYCLOAK_DOMAIN','');
|
||||||
|
}
|
||||||
|
if (!defined('KEYCLOAK_REALM')) {
|
||||||
|
define('KEYCLOAK_REALM','');
|
||||||
|
}
|
||||||
|
if (!defined('KEYCLOAK_CLIENT_ID')) {
|
||||||
|
define('KEYCLOAK_CLIENT_ID','');
|
||||||
|
}
|
||||||
|
if (!defined('KEYCLOAK_CLIENT_SECRET')) {
|
||||||
|
define('KEYCLOAK_CLIENT_SECRET','');
|
||||||
|
}
|
||||||
|
if (!defined('APP_DOMAIN')) {
|
||||||
|
define('APP_DOMAIN','');
|
||||||
|
}
|
||||||
|
?>
|
@@ -1,11 +0,0 @@
|
|||||||
<?php
|
|
||||||
$host = "db";
|
|
||||||
$user = "orario";
|
|
||||||
$pass = "orario";
|
|
||||||
$dbname = "school_timetable";
|
|
||||||
|
|
||||||
$conn = new mysqli($host, $user, $pass, $dbname);
|
|
||||||
if ($conn->connect_error) {
|
|
||||||
die("Connection failed: " . $conn->connect_error);
|
|
||||||
}
|
|
||||||
?>
|
|
@@ -2,7 +2,6 @@
|
|||||||
session_start();
|
session_start();
|
||||||
if (!isset($_SESSION['admin'])) { header("Location: login.php"); exit; }
|
if (!isset($_SESSION['admin'])) { header("Location: login.php"); exit; }
|
||||||
include("../lib/db.php");
|
include("../lib/db.php");
|
||||||
include("../config/config.php");
|
|
||||||
|
|
||||||
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['name'])) {
|
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['name'])) {
|
||||||
$name = $_POST['name'];
|
$name = $_POST['name'];
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
use Jumbojett\OpenIDConnectClient;
|
||||||
|
require 'vendor/autoload.php';
|
||||||
session_start();
|
session_start();
|
||||||
include("../lib/db.php");
|
include("../lib/db.php");
|
||||||
include("../config/config.php");
|
if ($_SERVER["REQUEST_METHOD"] == "POST" && AUTH_TYPE == 'local') {
|
||||||
|
|
||||||
if ($_SERVER["REQUEST_METHOD"] == "POST" && AUTH_TYPE === 'local') {
|
|
||||||
$username = $_POST['username'];
|
$username = $_POST['username'];
|
||||||
$password = $_POST['password'];
|
$password = $_POST['password'];
|
||||||
$stmt = $conn->prepare("SELECT * FROM admin WHERE username = ?");
|
$stmt = $conn->prepare("SELECT * FROM admin WHERE username = ?");
|
||||||
@@ -20,8 +20,9 @@ if ($_SERVER["REQUEST_METHOD"] == "POST" && AUTH_TYPE === 'local') {
|
|||||||
}
|
}
|
||||||
$error = "Credenziali non valide";
|
$error = "Credenziali non valide";
|
||||||
}
|
}
|
||||||
if (AUTH_TYPE === 'local') {
|
if (AUTH_TYPE == 'local') {
|
||||||
echo ```<!DOCTYPE html>
|
echo <<<HTML
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Login Admin</title>
|
<title>Login Admin</title>
|
||||||
@@ -45,16 +46,16 @@ if (AUTH_TYPE === 'local') {
|
|||||||
<input type="password" name="password" placeholder="Password" required><br>
|
<input type="password" name="password" placeholder="Password" required><br>
|
||||||
<button type="submit">Login</button>
|
<button type="submit">Login</button>
|
||||||
</form>
|
</form>
|
||||||
<?php if(isset($error)) echo "<br><div class='error'>$error</div>"; ?>
|
HTML;
|
||||||
</div>
|
if(isset($error)) echo "<br><div class='error'>$error</div>";
|
||||||
|
echo <<<HTML
|
||||||
|
</div>
|
||||||
<p style="text-align: center;">Copyright (C) 2025 EmmeV. - Released under <a href="https://git.vichingo455.freeddns.org/emmev-code/orario/src/branch/stable/LICENSE.txt" target="_blank">GNU AGPL 3.0 License</a>.</p>
|
<p style="text-align: center;">Copyright (C) 2025 EmmeV. - Released under <a href="https://git.vichingo455.freeddns.org/emmev-code/orario/src/branch/stable/LICENSE.txt" target="_blank">GNU AGPL 3.0 License</a>.</p>
|
||||||
</body>
|
</body>
|
||||||
</html>```;
|
</html>
|
||||||
|
HTML;
|
||||||
}
|
}
|
||||||
else if (AUTH_TYPE === 'keycloak') {
|
else if (AUTH_TYPE === 'keycloak') {
|
||||||
require 'vendor/autoload.php';
|
|
||||||
use Jumbojett\OpenIDConnectClient;
|
|
||||||
session_start();
|
|
||||||
// Configura il client Keycloak
|
// Configura il client Keycloak
|
||||||
$oidc = new OpenIDConnectClient(
|
$oidc = new OpenIDConnectClient(
|
||||||
'https://' + KEYCLOAK_DOMAIN + '/realms/' + KEYCLOAK_REALM + '/',
|
'https://' + KEYCLOAK_DOMAIN + '/realms/' + KEYCLOAK_REALM + '/',
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
session_start();
|
session_start();
|
||||||
include("../lib/db.php");
|
include("../lib/db.php");
|
||||||
include("../config/config.php");
|
|
||||||
|
|
||||||
if (!isset($_SESSION['admin']) || $_SESSION['auth_type'] != 'local') {
|
if (!isset($_SESSION['admin']) || $_SESSION['auth_type'] != 'local') {
|
||||||
header("Location: login.php");
|
header("Location: login.php");
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
session_start();
|
session_start();
|
||||||
if (!isset($_SESSION['admin'])) { header("Location: login.php"); exit; }
|
if (!isset($_SESSION['admin'])) { header("Location: login.php"); exit; }
|
||||||
include("../lib/db.php");
|
include("../lib/db.php");
|
||||||
include("../config/config.php");
|
|
||||||
|
|
||||||
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['name'])) {
|
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['name'])) {
|
||||||
$name = $_POST['name'];
|
$name = $_POST['name'];
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
session_start();
|
session_start();
|
||||||
if (!isset($_SESSION['admin'])) { header("Location: login.php"); exit; }
|
if (!isset($_SESSION['admin'])) { header("Location: login.php"); exit; }
|
||||||
include("../lib/db.php");
|
include("../lib/db.php");
|
||||||
include("../config/config.php");
|
|
||||||
|
|
||||||
// --- Recupera tutte le materie ---
|
// --- Recupera tutte le materie ---
|
||||||
$subjects = [];
|
$subjects = [];
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
session_start();
|
session_start();
|
||||||
include("../lib/db.php");
|
include("../lib/db.php");
|
||||||
include("../config/config.php");
|
|
||||||
|
|
||||||
if (!isset($_SESSION['admin']) || $_SESSION['auth_type'] != 'local' || $_SESSION['admin'] != 'admin') {
|
if (!isset($_SESSION['admin']) || $_SESSION['auth_type'] != 'local' || $_SESSION['admin'] != 'admin') {
|
||||||
header("Location: login.php");
|
header("Location: login.php");
|
||||||
|
@@ -1,17 +1,42 @@
|
|||||||
<?php
|
<?php
|
||||||
// Impostazioni Database
|
// Impostazioni Database
|
||||||
define('DB_HOST', 'db');
|
if (!defined('DB_HOST')) {
|
||||||
define('DB_USER', 'orario');
|
define('DB_HOST', '<MYSQL_HOST>'); // Host del database (ad esempio localhost)
|
||||||
define('DB_PASS', 'orario');
|
}
|
||||||
define('DB_NAME', 'school_timetable');
|
if (!defined('DB_USER')) {
|
||||||
|
define('DB_USER', '<MYSQL_USER>'); // Utente del database (ad esempio orario)
|
||||||
|
}
|
||||||
|
if (!defined('DB_PASS')) {
|
||||||
|
define('DB_PASS', '<MYSQL_PASSWORD>'); // 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
|
// Impostazioni sito generali
|
||||||
define('APP_NAME', 'Orario Scuola');
|
if (!defined('APP_NAME')) {
|
||||||
define('YEAR', '2025/26');
|
define('APP_NAME', 'Orario Scuola'); // Nome del sito
|
||||||
|
}
|
||||||
|
if (!defined('YEAR')) {
|
||||||
|
define('YEAR', '2025/26'); // Anno Scolastico Corrente
|
||||||
|
}
|
||||||
// Impostazioni autenticazione dashboard amministrativa
|
// Impostazioni autenticazione dashboard amministrativa
|
||||||
define('AUTH_TYPE','local'); // Può essere keycloak o local (integrata)
|
if (!defined('AUTH_TYPE')) {
|
||||||
define('KEYCLOAK_DOMAIN','');
|
define('AUTH_TYPE','local'); // Può essere keycloak o local (integrata)
|
||||||
define('KEYCLOAK_REALM','');
|
}
|
||||||
define('KEYCLOAK_CLIENT_ID','');
|
// Impostazioni autenticazione via Keycloak (facoltative se AUTH_TYPE sta impostato su local)
|
||||||
define('KEYCLOAK_CLIENT_SECRET','');
|
if (!defined('KEYCLOAK_DOMAIN')) {
|
||||||
define('APP_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)
|
||||||
|
}
|
||||||
?>
|
?>
|
@@ -1,6 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
include("lib/db.php");
|
include("lib/db.php");
|
||||||
include("config/config.php");
|
|
||||||
$teacher = $_GET['teacher'];
|
$teacher = $_GET['teacher'];
|
||||||
$days = ["Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"];
|
$days = ["Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"];
|
||||||
$hours = [
|
$hours = [
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
include("lib/db.php");
|
include("lib/db.php");
|
||||||
include("config/config.php");
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
include("lib/db.php");
|
include("lib/db.php");
|
||||||
include("config/config.php");
|
|
||||||
$room = $_GET['room']; // aula selezionata
|
$room = $_GET['room']; // aula selezionata
|
||||||
$days = ["Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"];
|
$days = ["Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"];
|
||||||
$hours = [
|
$hours = [
|
||||||
|
@@ -1,8 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
$host = "<MYSQL_HOST>";
|
include_once __DIR__ . '/../config/config.php';
|
||||||
$user = "<MYSQL_USER>";
|
$host = DB_HOST;
|
||||||
$pass = "<MYSQL_PASSWORD>";
|
$user = DB_USER;
|
||||||
$dbname = "school_timetable";
|
$pass = DB_PASS;
|
||||||
|
$dbname = DB_NAME;
|
||||||
|
|
||||||
$conn = new mysqli($host, $user, $pass, $dbname);
|
$conn = new mysqli($host, $user, $pass, $dbname);
|
||||||
if ($conn->connect_error) {
|
if ($conn->connect_error) {
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
include("lib/db.php");
|
include("lib/db.php");
|
||||||
include("config/config.php");
|
|
||||||
$class_id = intval($_GET['class_id']);
|
$class_id = intval($_GET['class_id']);
|
||||||
$class = $conn->query("SELECT * FROM classes WHERE id=$class_id")->fetch_assoc();
|
$class = $conn->query("SELECT * FROM classes WHERE id=$class_id")->fetch_assoc();
|
||||||
$days = ["Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"];
|
$days = ["Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"];
|
||||||
|
Reference in New Issue
Block a user