4.4 KiB
4.4 KiB
PIVOT voor meerdere scholen (versie 1.1.0)
Eén PIVOT voor alle scholen. Zie DATABASE.md voor de databasestructuur (2026-27), de installatie en de rechten.
Elke school heeft:
- een eigen database (zelfde tabellen, eigen gegevens). De PIVOT-gebruikers en hun rechten per school staan centraal;
- een eigen e-maildomein (of meerdere). Bij Inloggen met Google wordt de school daaraan herkend;
- eigen koppelingen: Smartschool (webservice-wachtwoord, OneRoster), Informat (instellingsnummer, client-ID/secret), Google (serviceaccount-sleutel, admin, SMTP, OU's, 2FA), Signpost/M4S, CO2-netwerk en personeelsinstellingen.
Alles wat per school verschilt staat in de tabel Scholen van de centrale database. Geheimen (wachtwoorden,
client-secrets en de Google-sleutel) worden daar versleuteld bewaard. config.ini bevat enkel nog wat voor alle scholen geldt.
Eerste installatie / overzetten van 1.0.9
- Versleutelingssleutel maken en veilig bewaren (zonder deze sleutel zijn de opgeslagen geheimen onleesbaar):
Zet ze in de omgevingsvariabele
python beheer.py nieuwe-sleutelPIVOT_SLEUTEL(of laat PIVOT ze zelf aanmaken ingeheimen/pivot.key). Zet ookFLASK_SECRET_KEY(willekeurige lange tekst) enPIVOT_DB_PASSWORD. - config.ini invullen: databaseserver,
superbeheerders(Google-accounts van de scholengroep-ICT), en eventueel een gedeelde Google-login ([google_sso]). - Databases aanmaken:
mysql -u <gebruiker> -p < sql/installatie_pivot_26-27.sql(centrale databasepivot, school Scholengroep Antwerpen + database, administrator Marijn). Zie DATABASE.md. - Bestaande school importeren uit de oude config.ini (alle wachtwoorden worden versleuteld overgenomen):
python beheer.py importeer-config pad/naar/oude/config.ini --google-sleutel pad/naar/kamxm_api_key.json - Starten, inloggen met Google als superbeheerder → 🏫 Alle scholen beheren → Nieuwe school voor de andere scholen. Bij een nieuwe school kan PIVOT de database meteen aanmaken (lege standaardstructuur, of een volledige kopie van een bestaande school, mét gegevens en desgewenst met haar koppelingen en gebruikersrechten). Geef daarna via 🔐 Gebruikers & rechten de juiste mensen rechten in die school.
- Per school: 🩺 Testen controleert database, Smartschool, OneRoster, Informat, Google en Signpost.
Wie mag wat
| Rol | Hoe | Mag |
|---|---|---|
| Administrator | Gebruikers.Veiligheidsgroep = 1 (bv. Marijn), of Google-account in config.ini › superbeheerders |
alles in alle scholen: scholen toevoegen, gebruikers en rechten beheren, wisselen tussen scholen |
| Gebruiker | Veiligheidsgroep = 2 + rechten per school |
enkel de aangevinkte onderdelen, enkel in die scholen (zie DATABASE.md) |
| Leerkracht | Google-login, in de personeels-OU's, geen account | enkel de personeelsmodule |
Een administrator kan ook met gebruikersnaam en wachtwoord inloggen. Geef die rol dus enkel aan wie dat echt nodig heeft, met een sterk wachtwoord.
Hoe wordt de school bepaald?
- Eigen webadres: krijgt een school een hostnaam (bv.
pivot.school.be), dan ligt de school daar vast. - Google-login: het domein van het e-mailadres bepaalt de school.
- Gebruikersnaam/wachtwoord: de gebruiker kiest de school in een keuzelijst (die wordt onthouden op het toestel).
Google-login
- Gedeeld (aanrader): één OAuth-client (type Webtoepassing, toestemmingsscherm Extern) in
config.ini › [google_sso]. Werkt voor alle domeinen. Redirect-URI:https://<pivot-adres>/callback. - Per school: vul bij de school Google-login client-ID/secret in (bv. een Interne app in de Workspace van die school).
Achtergrondtaken
De dagelijkse synchronisatie van afwezigheden en het opruimen van 2FA-uitzonderingen lopen nu voor alle actieve scholen (elk op het eigen sync-uur). Scholen zonder Smartschool-wachtwoord of Google-sleutel worden overgeslagen.
Aandachtspunten
- CO2-sensoren: de scanner zoekt op het netwerk van de school. Draait PIVOT centraal, dan moet de server die netwerken kunnen bereiken.
- Schooljaar: leeg laten = automatisch (wisselt op 1 september). De Informat-telling gebruikt nu vandaag + 1 maand als
referentiedatum (vroeger vast
2027-1-3) en het schooljaar van de school (vroeger vast2025-26). - De kolom
KAMXM_nummerbehoudt die naam in elke schooldatabase (het is een interne kolomnaam). In de schermen staat "Toestelnummer".