"""
Handleidingen die PIVOT meelevert. Bij het opstarten komt elke handleiding waarvan de slug nog niet bestaat in de
tabel Handleidingen. Daarna pas je ze aan in PIVOT zelf (📘 Handleidingen › Bewerken); wijzigingen hier overschrijven niets.
Een verwijderde handleiding blijft verborgen (Zichtbaar = 'weg') en komt dus niet terug.
"""
TWEESTAPS_UITZONDERING = """
Met deze handleiding stel je in Google Admin alles in zodat PIVOT iemand tijdelijk zonder 2FA (tot 23:59 dezelfde dag) kan laten inloggen
(uitzondering) en 2FA kan resetten bij een nieuwe telefoon. Je doet dit één keer per domein; daarna enkel opnieuw
als er een organisatie-eenheid (OU) bijkomt.
Hoe werkt het? PIVOT zet een gebruiker in de groep 2fa-uitzondering. Voor die groep staat
"Afdwingen" op Uit. Zolang de gebruiker in de groep zit, mag hij zonder 2FA inloggen. Om 23:59 dezelfde dag haalt PIVOT
hem er automatisch weer uit.
Stap 1 – De groep aanmaken
- Ga naar admin.google.com › Directory › Groepen › Groep maken.
- Naam:
2fa-uitzondering, e-mailadres: 2fa-uitzondering@jouwdomein.be.
- Bij de instellingen van de groep:
- Wie kan lid worden: Alleen uitgenodigde gebruikers.
- Wie kan berichten plaatsen: Groepseigenaren (de groep dient niet om te mailen).
- Wie kan leden bekijken: Groepsbeheerders.
- Voeg zelf geen vaste leden toe. PIVOT voegt mensen toe en haalt ze er weer uit.
Stap 2 – 2FA uitzetten voor de groep, in élke OU waar 2FA verplicht is
Let op: een 2FA-instelling op een onderliggende OU gaat altijd vóór een groepsinstelling
hoger in de boom. Stel de groep daarom in bij elke OU waar 2FA afgedwongen wordt, ook bij sub-OU's.
- Ga naar Beveiliging › Authenticatie › Verificatie in 2 stappen (2-Step Verification).
- Kies links onder Organisatie-eenheden de OU, bv. GO-Antwerpen. Klap met het pijltje open om sub-OU's te zien.
- Klik links onderaan bij Groepen op de groep 2fa-uitzondering (of voeg ze toe via "Groepen zoeken").
Bovenaan moet nu staan: "Instellingen tonen voor gebruikers in [jouw OU] (organisatie-eenheid) die zich ook in
2fa-uitzondering (groep) bevinden".
- Laat Gebruikers toestaan tweestapsverificatie aan te zetten aangevinkt.
- Zet Afdwingen op Uit.
- Klik op Overschrijven (of Opslaan). Onder "Verificatie" moet nu Overschreven staan, niet "Overgenomen".
- Herhaal stap 2 tot 6 voor elke OU en sub-OU waar 2FA op Aan staat.
Tip: per OU kan je maar één groep instellen. Gebruik daarom overal dezelfde groep 2fa-uitzondering.
Stap 3 – Rechten voor PIVOT (domeinbrede delegatie)
- Ga naar Beveiliging › Toegangs- en gegevensbeheer › API-beheer › Domeinbrede delegatie beheren.
- Klik bij het service-account van PIVOT op Bewerken.
- Controleer dat minstens deze scopes erbij staan (in het veld gescheiden door komma's):
https://www.googleapis.com/auth/admin.directory.user
https://www.googleapis.com/auth/admin.directory.user.security (2FA resetten, back-upcodes)
https://www.googleapis.com/auth/admin.directory.group.member (in/uit de groep zetten)
https://www.googleapis.com/auth/admin.directory.orgunit
- Klik op Autoriseren. Het kan enkele minuten duren voor Google dit toepast.
Stap 4 – De groep invullen in PIVOT
- Open in PIVOT 🔌 Koppelingen van deze school › 🛡️ 2FA-hulp.
- Vul bij Uitzonderingsgroep het e-mailadres van de groep in:
2fa-uitzondering@jouwdomein.be.
- Opslaan en Testen.
Stap 5 – Testen met een testaccount
- Geef in PIVOT (🛡️ 2FA-hulp) een testgebruiker een tijdelijke uitzondering (loopt tot 23:59).
- Kijk in Google Admin bij Gebruikers › [testgebruiker] › Groepen: 2fa-uitzondering moet in de lijst staan.
- Kijk bij Gebruikers › [testgebruiker] › Beveiliging › Tweestapsverificatie.
Zolang daar "Afgedwongen in uw hele organisatie" staat, heeft Google de uitzondering nog niet toegepast.
Geduld: Google past een nieuwe groepsinstelling meestal binnen enkele minuten toe, maar het kan
tot 24 uur duren, zeker bij een nieuwe groep of een nieuw account. PIVOT blijft een 2FA-reset elke minuut opnieuw proberen
zolang de uitzondering loopt.
Iemand heeft een nieuwe telefoon
Gebruik eerst een back-upcode: die werkt meteen, ook als 2FA afgedwongen wordt.
- PIVOT: 🛡️ 2FA-hulp › zoek de gebruiker › Back-upcodes tonen / aanmaken
(of in Google Admin: Gebruikers › gebruiker › Beveiliging › Tweestapsverificatie › Back-upverificatiecodes ophalen).
- Geef de gebruiker één code. Hij logt in met zijn wachtwoord en die code.
- Daarna koppelt hij zijn nieuwe telefoon via myaccount.google.com › Beveiliging
› Verificatie in 2 stappen.
Lukt dat niet, gebruik dan in PIVOT 📵 2FA resetten. PIVOT zet de gebruiker dan in de uitzonderingsgroep en zet 2FA uit
zodra Google de uitzondering toepast.
Problemen oplossen
| Wat zie je? | Oorzaak | Oplossing |
| Gebruiker zit in de groep, maar 2FA blijft "Afgedwongen" |
De gebruiker staat in een (sub-)OU waar de groep niet ingesteld is, of Google past de instelling nog toe. |
Controleer de OU van de gebruiker (Gebruikers › gebruiker, links onder "Organisatie-eenheid") en voer stap 2 uit voor
precies die OU. Wacht anders tot 24 uur. |
| "2-Step Verification cannot be turned off: … enforced" |
Google dwingt 2FA nog af voor deze gebruiker. |
Zie hierboven. PIVOT probeert automatisch opnieuw. |
| "Google weigert de toegang" / unauthorized_client |
Een scope ontbreekt. | Stap 3. |
| "Gebruiker of groep niet gevonden" |
Het e-mailadres van de groep in PIVOT klopt niet. | Stap 4. |
"""
MAIL_DELEGATIE = """
Met deze handleiding stel je Google Admin zo in dat PIVOT (✉️ Mailbox-delegatie) iemand toegang kan geven tot de
mailbox van iemand anders, bv. het secretariaat tot de mailbox van de directie. De gedelegeerde kan dan lezen, versturen en verwijderen
namens de eigenaar, maar kent het wachtwoord niet en kan de instellingen niet wijzigen.
Stap 1 – Maildelegatie toelaten
- Ga naar admin.google.com › Apps › Google Workspace › Gmail › Gebruikersinstellingen.
- Kies links de organisatie-eenheid van de mailboxen die gedeeld moeten worden (bv. GO-Antwerpen).
Kies de hoogste OU als het voor iedereen mag; sub-OU's nemen de instelling over, tenzij ze ze zelf overschrijven.
- Open het onderdeel Maildelegatie (Mail delegation).
- Vink aan: Gebruikers toestaan toegang tot hun mailbox te delegeren aan andere gebruikers in het domein.
- Kies hoe verzonden mails getoond worden:
- De accounteigenaar en de gedelegeerde die de e-mail heeft verzonden tonen (aangeraden: de ontvanger ziet wie echt schreef), of
- Alleen de accounteigenaar tonen.
- Klik op Opslaan.
Let op: staat maildelegatie in een sub-OU op "Overschreven" en uit, dan werkt delegatie daar niet,
ook al staat ze hoger in de boom aan. Controleer de OU van de mailbox-eigenaar.
Stap 2 – Gmail API aanzetten (eenmalig)
- Ga naar console.cloud.google.com › API's › Gmail API.
- Kies bovenaan het project van het PIVOT-service-account.
- Klik op Inschakelen (staat er "Beheren", dan is het al aan).
Stap 3 – Rechten voor PIVOT (domeinbrede delegatie)
- Ga in Google Admin naar Beveiliging › Toegangs- en gegevensbeheer › API-beheer › Domeinbrede delegatie beheren.
- Klik bij het service-account van PIVOT op Bewerken.
- Voeg deze twee scopes toe aan de bestaande lijst (gescheiden door komma's; verwijder de andere niet):
https://www.googleapis.com/auth/gmail.settings.sharing (delegatie toevoegen en verwijderen)
https://www.googleapis.com/auth/gmail.settings.basic (bestaande delegaties tonen)
- Klik op Autoriseren.
Tip: ontbreekt gmail.settings.basic, dan kan PIVOT wel delegaties toevoegen maar de lijst niet tonen
("insufficient authentication scopes").
Stap 4 – Rechten in PIVOT
- Geef wie delegaties mag beheren het recht Mailbox-delegatie in de juiste school
(⚙️ Beheer › 🔐 Gebruikers & rechten › 🔐 Rechten).
- Test in ✉️ Mailbox-delegatie met twee testaccounts: geef account B toegang tot de mailbox van account A.
Goed om te weten
- Een delegatie via PIVOT werkt meestal na ongeveer een minuut. De gedelegeerde hoeft niets te bevestigen.
- Een nieuwe instelling in Google Admin (stap 1) kan tot 24 uur duren voor ze overal geldt.
- De gedelegeerde opent de mailbox in Gmail via zijn profielfoto rechtsboven › de gedeelde mailbox kiezen.
- Eigenaar en gedelegeerde moeten in dezelfde Google Workspace-organisatie zitten. Gebruik het
primaire e-mailadres, geen alias.
- Een mailbox kan maximaal 25 gedelegeerden hebben; iemand kan maximaal 10 mailboxen openen
(Google kan deze limieten per organisatie anders instellen).
Problemen oplossen
| Wat zie je? | Oorzaak | Oplossing |
| "insufficient authentication scopes" bij het tonen | gmail.settings.basic ontbreekt. | Stap 3. |
| "unauthorized_client" / Google weigert de toegang | gmail.settings.sharing ontbreekt of is nog niet toegepast. |
Stap 3, en enkele minuten wachten. |
| Gmail API has not been used / is disabled | Gmail API staat uit in het Cloud-project. | Stap 2. |
| Toevoegen mislukt voor één persoon, voor anderen lukt het |
Maildelegatie staat uit in de OU van die mailbox-eigenaar, of er zijn al 25 gedelegeerden. | Stap 1 voor die OU. |
| Gedelegeerde ziet de mailbox niet | Nog niet toegepast, of hij kijkt niet via zijn profielfoto. |
Even wachten, opnieuw inloggen in Gmail. |
"""
GOOGLE_KOPPELING = """
PIVOT praat met Google via een serviceaccount: een technisch account in Google Cloud dat namens een beheerder
(bv. ict@school.be) handelt. Daarvoor zijn er drie plaatsen: Google Cloud Console (project, API's,
serviceaccount, sleutel), Google Admin (domeinbrede delegatie) en PIVOT (sleutel uploaden).
Optioneel stel je ook Inloggen met Google in.
Wie? Je hebt een account nodig dat in Google Cloud projecten mag aanmaken en in Google Admin
superbeheerder is. Je doet dit één keer; meerdere scholen in hetzelfde Google-domein mogen dezelfde sleutel gebruiken.
Stap 1 – Project aanmaken
- Ga naar console.cloud.google.com en log in met je beheerdersaccount.
- Klik bovenaan op de projectkiezer › Nieuw project.
- Naam: bv.
PIVOT. Organisatie: jullie domein. Klik op Maken.
- Controleer bovenaan dat het nieuwe project gekozen is voor je verder gaat.
Stap 2 – API's inschakelen
Ga naar API's en services › Bibliotheek, zoek elke API en klik op Inschakelen:
| API | Nodig voor |
| Admin SDK API | Gebruikers, wachtwoorden, OU's, Chromebooks, groepen, 2FA |
| Gmail API | Mailbox-delegatie |
| Enterprise License Manager API | Google-licenties |
| Groups Settings API | Verzendlijsten: wie mag mailen naar de lijst |
Stap 3 – Serviceaccount aanmaken
- Ga naar IAM en beheer › Serviceaccounts › Serviceaccount maken.
- Naam: bv.
pivot. Klik op Maken en doorgaan.
- De stappen "Rollen" en "Gebruikerstoegang" laat je leeg (PIVOT werkt via domeinbrede delegatie, niet via
Cloud-rollen). Klik op Klaar.
- Open het serviceaccount en noteer de Unieke ID (een lang getal, ook "OAuth 2-client-ID" genoemd).
Die heb je nodig in stap 5.
Stap 4 – JSON-sleutel maken
- Open het serviceaccount › tabblad Sleutels › Sleutel toevoegen › Nieuwe sleutel maken.
- Kies JSON › Maken. Het bestand wordt gedownload.
- Bewaar het veilig: wie dit bestand heeft, kan alles wat PIVOT kan. Verwijder het van je pc na stap 6.
"Het maken van serviceaccountsleutels is uitgeschakeld"? Nieuwe Google Cloud-organisaties blokkeren
sleutels standaard met de organisatiebeleidsregel
iam.disableServiceAccountKeyCreation
(of
iam.managed.disableServiceAccountKeyCreation). Zet ze uit voor
enkel dit project:
- Geef jezelf op organisatieniveau de rol Beheerder van organisatiebeleid (Organization Policy Administrator)
via IAM en beheer › IAM (kies bovenaan de organisatie, niet het project).
- Kies bovenaan opnieuw het project PIVOT › IAM en beheer › Organisatiebeleid.
- Zoek
disableServiceAccountKeyCreation › Beleid beheren › Beleid van bovenliggend item
overschrijven › regel toevoegen › Afdwingen: Uit › Beleid instellen.
- Wacht enkele minuten (soms tot een uur) en probeer stap 4 opnieuw.
Stap 5 – Domeinbrede delegatie in Google Admin
- Ga naar admin.google.com › Beveiliging › Toegangs- en
gegevensbeheer › API-beheer › Domeinbrede delegatie beheren.
- Klik op Nieuwe toevoegen.
- Client-ID: de Unieke ID uit stap 3 (PIVOT toont ze ook na het uploaden van de sleutel).
- OAuth-bereiken: plak deze regel in zijn geheel:
https://www.googleapis.com/auth/admin.directory.user,https://www.googleapis.com/auth/admin.directory.user.security,https://www.googleapis.com/auth/admin.directory.group.member,https://www.googleapis.com/auth/admin.directory.orgunit,https://www.googleapis.com/auth/admin.directory.device.chromeos,https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly,https://www.googleapis.com/auth/admin.directory.device.mobile,https://www.googleapis.com/auth/admin.directory.device.mobile.readonly,https://www.googleapis.com/auth/apps.licensing,https://www.googleapis.com/auth/gmail.settings.sharing,https://www.googleapis.com/auth/gmail.settings.basic,https://www.googleapis.com/auth/admin.directory.group,https://www.googleapis.com/auth/apps.groups.settings,https://www.googleapis.com/auth/gmail.modify,https://www.googleapis.com/auth/contacts,https://www.googleapis.com/auth/drive
- Klik op Autoriseren. Het kan enkele minuten duren voor Google dit toepast.
| Scope (zonder https://www.googleapis.com/auth/) | Waarvoor in PIVOT |
admin.directory.user | Accounts aanmaken, wachtwoord resetten, leerlingen |
admin.directory.user.security | 2FA: back-upcodes, 2FA resetten |
admin.directory.group.member | 2FA-uitzonderingsgroep |
admin.directory.orgunit | Organisatie-eenheden |
admin.directory.device.chromeos (+ .readonly) | Chromebooks blokkeren/deblokkeren, opzoeken |
admin.directory.device.mobile (+ .readonly) | Mobiele toestellen |
apps.licensing | Google-licenties |
gmail.settings.sharing | Mailbox-delegatie toevoegen/verwijderen |
gmail.settings.basic | Mailbox-delegaties tonen, Gmail-handtekeningen instellen |
gmail.modify | E-mails met een label kopiëren/verplaatsen naar een andere mailbox |
drive | Gedeelde drives: overzicht, leden en rechten (Google Drive API moet aanstaan) |
contacts | Contactlijsten in de mailboxen van gebruikers (People API moet aanstaan) |
Tip: Bestaat er al een regel voor deze client-ID, klik dan op Bewerken en
vervang de lijst; anders heb je er twee.
Stap 6 – Sleutel en beheerder instellen in PIVOT
- Open in PIVOT 🏫 Alle scholen beheren › de school › Bewerken
(of 🔌 Koppelingen van deze school).
- Bij Algemeen › Beheerder (Google-admin): het account waarnamens PIVOT werkt, bv.
ict@school.be.
Dit moet een superbeheerder zijn (of een beheerder met de nodige rechten) in Google Admin.
- Bij 🔑 Google Workspace › Serviceaccount (JSON-sleutel): upload het JSON-bestand uit stap 4.
PIVOT bewaart het versleuteld en toont daarna het e-mailadres en de client-ID van het serviceaccount.
- Opslaan, en daarna op 🩺 Testen klikken. Alles in orde? Verwijder het JSON-bestand van je pc.
Stap 7 (optioneel) – Inloggen met Google
Hiermee loggen leerkrachten en PIVOT-gebruikers in met hun Google-account in plaats van een wachtwoord.
- In de Cloud Console (zelfde project): API's en services › OAuth-toestemmingsscherm
(in de nieuwe versie: Google Auth Platform › Branding). Kies als doelgroep Intern,
app-naam
PIVOT, ondersteunings-e-mail en je ontwikkelaarsadres. Opslaan.
- Inloggegevens (of Google Auth Platform › Clients) › Inloggegevens maken › OAuth-client-ID.
- Type: Webapplicatie, naam
PIVOT login.
- Bij Geautoriseerde omleidings-URI's: het adres van PIVOT +
/callback,
bv. https://pivot.school.be/callback. Gebruik je meerdere adressen (per school een eigen hostnaam), voeg ze allemaal toe.
- Klik op Maken en kopieer de client-ID en het clientgeheim.
- In PIVOT: vul ze in bij de school onder 🔑 Google Workspace › Google-login client-ID / client-secret,
of één keer voor alle scholen in
config.ini onder [google_sso].
Problemen oplossen
| Wat zie je? | Oorzaak | Oplossing |
unauthorized_client / "Client is unauthorized to retrieve access tokens" |
Client-ID of scope ontbreekt in de domeinbrede delegatie, of nog niet toegepast. |
Stap 5 nakijken (juiste Unieke ID, alle scopes), enkele minuten wachten. |
| "Invalid Input" / "Not Authorized to access this resource" |
Het beheerdersaccount klopt niet of is geen beheerder. | Stap 6, Beheerder (Google-admin). |
| "<API> has not been used in project … or it is disabled" |
De API staat niet aan. | Stap 2, in het juiste project. |
| "insufficient authentication scopes" | Eén scope ontbreekt (vaak een Gmail-scope). | Stap 5. |
| "redirect_uri_mismatch" bij inloggen met Google |
Het adres van PIVOT staat niet bij de omleidings-URI's. |
Stap 7.4: exact hetzelfde adres (https, hostnaam, /callback). |
| Sleutel maken lukt niet | Organisatiebeleid blokkeert sleutels. | Kader bij stap 4. |
"""
STANDAARD = [
{
'slug': 'google-koppeling-cloud-console',
'titel': 'Google-koppeling instellen (Google Cloud Console)',
'categorie': 'Google Workspace',
'samenvatting': 'Project, API\'s, serviceaccount en JSON-sleutel, domeinbrede delegatie met alle scopes, '
'sleutel in PIVOT en inloggen met Google.',
'inhoud': GOOGLE_KOPPELING,
},
{
'slug': '2fa-uitzondering-google-admin',
'titel': '2FA-uitzondering instellen in Google Admin',
'categorie': 'Google Workspace',
'samenvatting': 'Groep 2fa-uitzondering aanmaken, 2FA uitzetten per OU, rechten voor PIVOT en testen.',
'inhoud': TWEESTAPS_UITZONDERING,
},
{
'slug': 'mailbox-delegatie-google-admin',
'titel': 'Mailbox-delegatie instellen in Google Admin',
'categorie': 'Google Workspace',
'samenvatting': 'Maildelegatie toelaten per OU, Gmail API, scopes voor PIVOT en testen.',
'inhoud': MAIL_DELEGATIE,
},
]