... | ... | @@ -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:
|
... | ... | |