// teach: centrale permissiematrix voor de 4 vaste rollen (super/admin/teacher/pupil). // Gespiegeld in public/js/permissions.js (geen bundler in dit project, dus twee // bestanden die dezelfde waarden hand-in-hand bijhouden). Dit is geen database- // gestuurd/rechten-per-gebruiker-configureerbaar systeem, maar één benoemde bron // i.p.v. dezelfde rol-arrays los verspreid over de routes. export 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'], 'progress.view': ['super', 'admin', 'teacher'], 'shared.global.manage': ['super'], 'content.manage': ['super'], 'shared.school.manage': ['super', 'admin', 'teacher'], }; // Welke rol een account met welke rol mag aanmaken. export const CREATABLE_ROLES = { super: ['super', 'admin', 'teacher', 'pupil'], admin: ['admin', 'teacher', 'pupil'], teacher: ['pupil'], }; // roles mag een losse rol-string zijn (bestaande aanroepen) of een array van alle // rollen die een gebruiker heeft (hoofdrol + eventuele extra stafrollen). export const can = (roles, action) => { const list = Array.isArray(roles) ? roles : [roles]; return (PERMISSIONS[action] || []).some(r => list.includes(r)); };