Update home authored by Seyfried's avatar Seyfried
......@@ -8,20 +8,72 @@ Zum Verständnis ist es wichtig, die zweigeteilte Architektur des Systems zu ken
- installiertes sqlite3-Paket
- Systemvoraussetzungen des Fat-free-PHP-Framework, siehe [hier](https://fatfreeframework.com/3.8/system-requirements)
## Herunterladen auf beide Webserver
## Installation auf beiden Webservern
Das Paket sollte auf beiden beteiligten Servern in einem geeigneten Ordner im Webroot heruntergeladen werden:
```git clone https://gitlab.hhs.karlsruhe.de/Seyfried/student-id-kortpress.git .```
```
cd /var/www/html/ID # Beispiel-Verzeichnis, anpassen!
git clone https://gitlab.hhs.karlsruhe.de/Seyfried/student-id-kortpress.git .
```
Die beiden Ordner ```internal```und ```external``` enthalten die Dateistrukturen für den internen bzw. externen Server. Um möglichst einfache Updates zu ermöglichen, besteht die Möglichkeit, die Dateien über Softlinks zugänglich zu machen:
```
ln -s external/* .
```
(und für ```internal``` analog). Den Ordner "internal" kann man im Webroot liegen lassen, dieser stellt kein Sicherheitsrisiko dar.
(und für ```internal``` analog). Den Ordner "internal" kann man im Webroot liegen lassen, dieser stellt kein Sicherheitsrisiko dar, solange keine Schülerdaten im Verzeichnis liegen.
Alternativ kann man die Dateien auch per ```mv```aus den beiden Unterordnern herausschieben und den jeweils nicht benötigten Ordner löschen. Dabei ist darauf zu achten, dass auf beiden Servern der lib-Ordner mit dem benötigten PHP-Framework vorliegt.
ToDo
- Erstellen der beiden ```config.php``` anhand der ```config-sample.php```
## Konfiguration
### externer Webserver
Die folgende config-sample.php wird für den öffentlichen Webserver mitgeliefert:
```php
<?php
/* Edit this file and save it as config.php to your external server directory */
define('school', 'Musterschule Musterstadt');
// set this to TRUE if you want the students to authenticate themselves with their birthday:
define('require_birthday', TRUE);
// internal URLs to request
define('internal_server', '<your internal server URL>');
define('verify_url', internal_server.'/ID/internal/verify/');
define('register_url', internal_server.'/ID/internal/register/');
?>
```
Man kopiert diese Datei in ```config.php``` und editiert die ersten drei ```defines```. Die letzten beiden Zeilen sollten unverändert bleiben.
### interner Webserver
Die folgende config-sample.php wird für den internen Webservice mitgeliefert:
```php
<?php
/* Edit this file and save it as config.php to your internal server directory */
/* local configuration */
define('STUDENTS_CVS', '/path/to/your/student-csv.csv');
define('PASS_DB', '<absolute path, writable for php>/passes.sqlite');
define('KORTPRESS_TOKEN', '<your-API-token>');
define('KORTPRESS_TEMPLATE_ID', 0000);
define('VERIFY_BASE_URL', 'https://www.example.com/ID/v/'); // this points to your external-folder. Trailing /
define('SCHOOL', 'Musterschule Musterstadt');
define('IMG_BASE_URL', 'https://www.example.com/ID/templates/');
define('SCHOOL_URL', 'https://www.example.com/');
// CSV structure. Specify the positions of the relevant fields here.
// Example: we have
// login;shortname;idnumber;lastname;firstname;email;Klasse;birthday;Austrittsdatum;Eintrittsdatum
//
define('CSV_ID', 2);
define('CSV_LAST', 3);
define('CSV_FIRST', 4);
define('CSV_BIRTHDAY', 7);
define('invalid_wait', 3); //seconds to wait after an invalid UUID request for rate limiting
?>
```
Das Vorgehen ist hier das gleiche wie beim externen Webserver: ```cp config-sample.php config.php``` und editieren der erforderlichen Felder.
# Benutzeranleitung
Die Registrierung erfolgt über einen Serienbrief (z.B. mit der Schulbescheinigung für das aktuelle Schuljahr), wo die Registierungs-URL als QR-Code ausgegeben ist:
......
......