Files
Pivot/MEERDERE_SCHOLEN.md
T
2026-10-14 13:34:37 +02:00

4.4 KiB
Raw Blame History

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

  1. Versleutelingssleutel maken en veilig bewaren (zonder deze sleutel zijn de opgeslagen geheimen onleesbaar):
    python beheer.py nieuwe-sleutel
    
    Zet ze in de omgevingsvariabele PIVOT_SLEUTEL (of laat PIVOT ze zelf aanmaken in geheimen/pivot.key). Zet ook FLASK_SECRET_KEY (willekeurige lange tekst) en PIVOT_DB_PASSWORD.
  2. config.ini invullen: databaseserver, superbeheerders (Google-accounts van de scholengroep-ICT), en eventueel een gedeelde Google-login ([google_sso]).
  3. Databases aanmaken: mysql -u <gebruiker> -p < sql/installatie_pivot_26-27.sql (centrale database pivot, school Scholengroep Antwerpen + database, administrator Marijn). Zie DATABASE.md.
  4. 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
    
  5. 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.
  6. 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?

  1. Eigen webadres: krijgt een school een hostnaam (bv. pivot.school.be), dan ligt de school daar vast.
  2. Google-login: het domein van het e-mailadres bepaalt de school.
  3. 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 vast 2025-26).
  • De kolom KAMXM_nummer behoudt die naam in elke schooldatabase (het is een interne kolomnaam). In de schermen staat "Toestelnummer".