Permisiuni
Cum este controlat accesul la backoffice prin roluri și organizații.
Introducere
CLUAR controlează accesul la backoffice prin roluri (grupuri), atribuite persoanelor dintr-o organizație. Fiecare serviciu REST al serverului este clasificat într-o categorie de acces, iar doar cine are rolul potrivit, în organizația potrivită, îl poate folosi.
Roluri
Există 5 roluri precreate (user_group):
| Cod | Nume |
|---|---|
administrator | Administrator |
editor | Editor |
author | Autor |
contributor | Colaborator |
subscriber | Abonat |
Astăzi, doar Administrator și Editor au într-adevăr acces la ceva — sunt singurele roluri referite în regulile de acces (vezi mai jos). Autor, Colaborator și Abonat există deja ca opțiune în formular, dar încă nu au niciun acces configurat; atribuirea unuia dintre aceste roluri cuiva nu îi oferă, astăzi, acces la nimic în backoffice.
Organizație
O persoană are un rol doar în contextul unei organizații — legătura se face în Organizație > Membri (organization_people), asociind Persoană + Organizație + Rol.
Astăzi există o singură organizație, cu codul admins, și în ea sunt verificate toate permisiunile. Entitatea organization suportă ierarhie (parent_id, organizații „părinte”), dar această ierarhie nu este încă folosită în regulile actuale de permisiune — toate verificările indică direct organizația admins.
Primul acces la modul de editare
CLUAR distinge două locuri diferite unde se face autentificarea:
- Backoffice-ul Netuno (portul
9000în dezvoltare) — este locul unde se gestionează direct utilizatorii Netuno (netuno_user, perechea nume de utilizator/parolă) și toate entitățile, inclusiv Persoană și Roluri. - Zona Rezervată a site-ului propriu-zis (
/login, portul3000în dezvoltare) — este locul unde editorul de conținut intră în fiecare zi, pentru a accesa modul de editare al paginilor.
Pentru a intra în Zona Rezervată și a avea modul de editare disponibil, este nevoie de un utilizator Netuno cu autentificare care să fie asociat unei Persoane, legată de organizația admins cu rolul Administrator sau Editor (vezi Organizație mai sus).
Utilizator implicit
Fișierul server/setup/030-people.js din CLUAR creează deja, implicit, o Persoană „admin” legată de utilizatorul Netuno cu id: 2, iar server/setup/050-organization_people.js leagă deja acea Persoană de organizația admins cu rolul Administrator — adică acest utilizator are din start acces total.
Autentificarea acestui utilizator implicit este:
utilizator: admin
parolă: admin
Cu aceste credențiale, se poate intra direct în Zona Rezervată (/login) deja ca Administrator — fără a fi nevoie de vreun pas suplimentar în backoffice-ul Netuno mai întâi.
admin/admin este o credențială cunoscută și previzibilă. Înainte ca un site să intre în producție, schimbă parola acestui utilizator (sau creează un nou Administrator și dezactivează acest cont).
Crearea de utilizatori noi
Există două căi posibile:
Prin Zona Rezervată (recomandat): în Utilizatori > Creare utilizator, un singur formular cere nume, nume de utilizator, parolă, e-mail, Organizație și Rol — și creează totul dintr-o dată: utilizatorul Netuno, Persoana (deja legată de acel utilizator) și legătura cu organizația/rolul alese. Nu este nevoie să treci prin backoffice-ul Netuno.
Doar prin backoffice-ul Netuno: întrucât backoffice-ul oferă acces direct la toate entitățile, este posibil să faci aceiași 3 pași manual, fără să pleci de acolo:
- Creează utilizatorul Netuno (
netuno_user), cu numele de utilizator/parola alese. - Creează o Persoană, asociind-o acelui utilizator Netuno.
- În
Organizație > Membri, asociază acea Persoană organizațieiadmins, cu rolul Administrator sau Editor.
În ambele cazuri, persoana creată poate deja să intre în /login și să aibă acces la modul de editare.
Cum sunt aplicate permisiunile
Fiecare serviciu al serverului este clasificat într-una dintre aceste categorii, definite în server/core/_service_config.js:
| Categorie | Cine are acces | Exemple |
|---|---|---|
| Publice | Oricine, fără autentificare | Contact, avatar, login |
| Gestionarea conținutului | Administrator + Editor | Pagini, versiuni, componente, dicționar, acțiuni |
| Administrarea site-ului | Doar Administrator | Configurări, limbi, sincronizare |
| Gestionarea acceselor | Doar Administrator | Organizații, persoane, utilizatori |
Orice serviciu care nu este listat într-una dintre aceste categorii este refuzat implicit — este o decizie deliberată a codului (comentată explicit în fișier), astfel încât uitarea clasificării unui serviciu nou să ducă la blocare, nu la acces liber din neatenție.
În mediul dev, _service_config.js eliberează toate serviciile chiar de la început, înainte de orice verificare — cu alte cuvinte, permisiunile sunt aplicate cu adevărat doar în producție/staging. La testarea locală, orice utilizator autentificat are acces la tot, indiferent de rol.
Interfața: meniul filtrează și după permisiune
Pe lângă blocarea la nivelul serverului, meniul lateral din Zona Rezervată (website/src/components/SideMenu) filtrează de asemenea elementele vizibile în funcție de rolul persoanei autentificate — pentru a nu afișa opțiuni pe care aceasta nu ar avea permisiunea să le folosească.
Lista „cine poate vedea ce” din SideMenu este menținută manual aliniată cu CONTENT_MANAGEMENT_PATHS, SITE_ADMIN_PATHS și ACCESS_MANAGEMENT_PATHS din _service_config.js — sunt două liste separate, una în frontend și alta în backend. Când adaugi un serviciu protejat nou, trebuie actualizate ambele; doar modificarea serverului ascunde eroarea (meniul continuă să afișeze o opțiune care în practică va fi refuzată), iar doar modificarea meniului nu protejează nimic în realitate.
Cum să protejezi un serviciu nou
- Creează serviciul în mod normal în
server/services/. - Adaugă calea serviciului (
path/method) la lista corectă dinserver/core/_service_config.js—CONTENT_MANAGEMENT_PATHS,SITE_ADMIN_PATHSsauACCESS_MANAGEMENT_PATHS— în funcție de cine trebuie să îl poată folosi. Dacă este public, adaugă laPUBLIC_PATHS. - Dacă serviciul are un element corespunzător în meniul Zonei Rezervate, actualizează și
SideMenupentru ca filtrul să corespundă permisiunii reale.