Hierarchikus jogosultságok a Drupal 8-ban

Bálint képe

Hamarosan elkezdek dolgozni a Google Summer of Code projektemen, melynek célja a Drupal jogosultsági rendszerének újragondolása, majd ennek implementálása a Drupal 8 magba. Izgalmas hónapoknak nézek elébe, először leginkább az API-ra fogok fókuszálni, aztán amikor minden rendelkezésre áll, a UX-Teammel együttműködve új felhasználói felületet valósítok meg a jogosultságok kezelésére.

A Google Summer of Code programról

A Summer of Code 2005-ös indulása óta a Google évről-évre nyílt forráskódú szoftvereket támogat azzal, hogy projekteket finanszíroz részükre, melyeken egyetemi hallgatók dolgozhatnak világszerte. A Drupal közösség idén is 20 projektre kapott lehetőséget, és kiválasztotta a résztvevőket.

Hogyan kerültem be?

Lugosi Kornélnak tartozom köszönettel, aki megadta az első igazi lökést, mikor egy szegedi DUG alkalmával beszélgettünk. Kornél hallgatóként és mentorként is szerzett tapasztalatokat, motiválóan hatott rám élménybeszámolója, a bíztatása pedig bátorságot adott ahhoz, hogy pár nappal később már a lehetséges projektemen gondolkozzak. Végül Képes Viktor ötletét továbbgondolva kialakult, hogy mivel szeretnék foglalkozni, nagy-nagy köszönet érte.

Abban a megtiszteltetésben részesülök, hogy Négyesi Károly, alias chx lesz a mentorom, ő fogja segíteni és felügyelni a munkámat. Talán elárulhatom, hogy mivel chx az egyik GSoC adminisztrátor, egyáltalán nem tervezte, hogy idén mentorként is tevékenykedni fog, azonban mikor először meséltem neki terveimről, megváltoztatta álláspontját. Felhívta a figyelmemet Larry Garfield bejegyzésére, aki két évvel ezelőtt hasonló tervekről vízionált. Egy-két nap múlva már Larry-vel és chx-szel beszélgettünk a lehetséges megvalósításról, és Bojhan Sommers, a UX-Team egyik vezetője is felajánlotta segítségét az új felhasználói felület kidolgozásában. Jókora gombóccal a torkomban készültem erre a megbeszélésre, de Boros Ádám bíztatása rengeteget segített abban, hogy úrrá legyek izgalmamon, köszönöm neki.

Amit jobbá szeretnék tenni

A jelenlegi jogosultsági rendszer használata sok esetben kényelmetlen; magas fokú koncentrációt és magabiztos ismereteket követel a megfelelő konfiguráció. Már az alaprendszer részét képező Node modul esetében sem egyértelmű első olvasásra, hogy pontosan mit takar például a tartalom adminisztrációja, ugyanez igaz a User modul felhasználók adminisztrációja jogosultságra, ami ezt figyelembevéve, kisebb sarkítással egyenesen biztonsági résnek tekinthető. Egy tapasztalatlan felhasználó ugyanis nincs tisztában azzal, hogy mivel jár egy csoport számára ennek a jogosultságnak az engedélyezése. Nem beszélve arról, hogy ezek a jogosultságok lefednek másokat, viszont ez szintén nem derül ki előzetes ismeretek nélkül. A felület nem támogatja ennek felismerését, az elnevezés persze sokatmondó lehet, de csupán erre hagyatkozni nem feltétlenül jó döntés hosszú távon.

A tervek

A projektem során egy olyan API-t fogok biztosítani a modulok számára, melynek használatával hierarchikusan szervezhetik az általuk definiált jogosultságokat. A hierarchikus rendszer segítséget nyújthat abban, hogy egyértelművé tegyük a Drupal adminisztrátorok számára, hogy a jogosultságok milyen funkciókhoz való hozzáférést fednek le pontosan. Szeretném a beállításokra szolgáló felületet átláthatóvá, egyszerűvé, jól kezelhetővé tenni.

A modulok jogosultsági fákat definiálhatnak majd, akár többet is. A felületen ezek megjelenítése a modulok szerinti csoportosítás helyett (esetleg mellett) logikai csoportok szerint történhet. Ezzel a lépéssel is segíthetjük a jobb megértést. Figyelmet fordítok majd azokra az esetekre is, amikor egy-egy modulhoz tartozó lehetőségeket nem szeretnénk pontosan testreszabni, hanem elegendő számunkra, ha pl. a modul jogosultsági fájának gyökerében található hozzáférést engedélyezzük csak az adminisztrátor csoport számára. A felület terveiről pontosabban korai lenne még írnom, ez később fog tisztázódni. Bár nem vagyok sem dizájner, sem UX-szakértő, mégis remek kihívásnak tekintem ezt a feladatot, és természetesen ebben a részben sok segítséget fogok kapni a UX-Teamtől és a közösségtől is.

Inspiráló feladatokon fogok dolgozni az elkövetkezendő hónapokban. Természetesen a Summer of Code végeztével sem szeretném ezt abbahagyni, aktívan részt veszek majd a Drupal 8 fejlesztésében. Szerencsésnek mondhatom magam amiatt, hogy átélhettem egy olyan közösségi élményt, amit a magyar Drupal közösségtől kaptam e projekt kapcsán - pedig még el sem kezdtem a munkát. Ebben a bejegyzésben nem készítettem teljes körű listát azokról a személyekről, akik támogattak, de hihetetlen pluszt kaptam, nagyon köszönöm mindenkinek!