All checks were successful
dev - build & deploy naar test / build-and-deploy (push) Successful in 9s
- Nieuwe tabel `assignments`: een leerkracht koppelt één van haar eigen borden aan een klas (standaard) of een individuele leerling (uitzondering, voor wie op een ander niveau werkt). - Geen momentopname: /my/assignment zoekt het bord live op bij de leerkracht, dus nieuwe woorden die zij toevoegt komen vanzelf door zodra de leerling-pagina opnieuw pollt (elke 20s). - Leerlingen loggen in op een vereenvoudigde pagina zonder whiteboard/ tekengereedschap: enkel de toegewezen taal-/rekenwidgets, als vaste (niet-sleepbare) kaarten in speelmodus. - Speelmodus verbergt bewerkfuncties in Ankerwoorden (plaatje kiezen, woord typen, kleur wijzigen) en Letterblokken (thema/woordbeheer) - overige widgets waren al zuiver speelgericht. - Elk bord krijgt een stabiel id (board.js) zodat een toewijzing een bord blijft vinden ook na hernoemen of herordenen. - Nieuw tabblad "Toewijzingen" in het beheerpaneel: per klas of leerling een eigen bord kiezen, met een expliciete toewijs-stap. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DuxHJtk5aHe2pA3xwCLEAk
30 lines
1.3 KiB
JavaScript
30 lines
1.3 KiB
JavaScript
/* teach - centrale permissiematrix voor de 4 vaste rollen (super/admin/teacher/pupil).
|
|
Gespiegeld in src/permissions.js (geen bundler in dit project, dus twee bestanden
|
|
die dezelfde waarden hand-in-hand bijhouden). */
|
|
const PERMISSIONS = {
|
|
'admin.access': ['super', 'admin', 'teacher'],
|
|
'password.own.change': ['super', 'admin', 'teacher'],
|
|
'schools.manage': ['super'],
|
|
'schools.resetPasswords': ['super', 'admin'],
|
|
'classes.view': ['super', 'admin', 'teacher'],
|
|
'classes.manage': ['super', 'admin'],
|
|
'users.manage': ['super', 'admin', 'teacher'],
|
|
'users.staffCredentials': ['super', 'admin'],
|
|
'users.genpw': ['super', 'admin', 'teacher'],
|
|
'users.role.change': ['super'],
|
|
'assignments.manage': ['super', 'admin', 'teacher'],
|
|
};
|
|
|
|
const CREATABLE_ROLES = {
|
|
super: ['super', 'admin', 'teacher', 'pupil'],
|
|
admin: ['admin', 'teacher', 'pupil'],
|
|
teacher: ['pupil'],
|
|
};
|
|
|
|
/* can(action) gebruikt de ingelogde gebruiker (currentUser, uit core.js) - hoofdrol
|
|
plus eventuele extra stafrollen (currentUser.extraRoles) */
|
|
function can(action){
|
|
if(!currentUser) return false;
|
|
const roles = [currentUser.role, ...(currentUser.extraRoles||[])];
|
|
return (PERMISSIONS[action] || []).some(r => roles.includes(r));
|
|
}
|