Összetett jogosultság-kezelés például Unixhoz hasonlóan?
Van egy remek cikk a weblaborban a cikkek között a php rovatban: Cikkek > PHP > Jogosultság kezelés. Cikksorozatnak indult, de sajnos az utolsó rész nem jelent meg.
A fórum keretein belül szeretném a szakértőket rávenni, hogy világosítsák meg a következő témát:
A fenti feladatot hogyan oldanátok meg? A táblákban létrehoznátok egy mezőt, ami a jogosultságokról tartalmaz információt? Pld. a Unixhoz hasonlóan: -rw-------.
Hogyan lehet ebben az esetben szabályozni az új sorok létrehozását? Kell valami mechanizmus, ami meghatározza, hogy egy adott felhasználó vagy csoport esetén milyen értékekkel tölthetőek fel az új sor mezői (pld. a más táblákba mutató mezők /foreign keys/).
Meg tudom oldani a feladatot úgy-ahogy, de egy olyan megoldás érdekel, ami a jövőben bővíthető.
■ A fórum keretein belül szeretném a szakértőket rávenni, hogy világosítsák meg a következő témát:
„...szeretnénk, ha minden felhasználó csak az általa létrehozott cikkeket tudná szerkeszteni. Egy ilyen esetben a jogosultságot egy függvényként foghatjuk fel, mely az aktuális paraméterek (cikk, felhasználó azonosító) birtokában képes eldönteni, hogy a felhasználó a kívánt funkció elérésére ténylegesen jogosult-e vagy sem. Ezeket hívtam a bevezetőben összetett jogosultságoknak...”
A fenti feladatot hogyan oldanátok meg? A táblákban létrehoznátok egy mezőt, ami a jogosultságokról tartalmaz információt? Pld. a Unixhoz hasonlóan: -rw-------.
Hogyan lehet ebben az esetben szabályozni az új sorok létrehozását? Kell valami mechanizmus, ami meghatározza, hogy egy adott felhasználó vagy csoport esetén milyen értékekkel tölthetőek fel az új sor mezői (pld. a más táblákba mutató mezők /foreign keys/).
Meg tudom oldani a feladatot úgy-ahogy, de egy olyan megoldás érdekel, ami a jövőben bővíthető.
jogosultságok
tudsz valami példát mondani erre foreign keyes dologra?
cms
Foreign keys (külső kulcsok): például vannak témakörök, és vannak cikkek, amelyeket egy-egy táblában tárolunk. A cikkeket tartalmazó tábla egyik oszlopa (ebben vannak a külső kulcsok) mondja meg, hogy a cikkek mely témakörbe tartoznak. Egy-egy felhasználó nem szerkesztheti az összes cikket (az egész táblát), csak egy adott témakörbe tartozó cikkeket. Tehát csak azokhoz a sorokhoz (cikkekhez) lehet hozzáférése, amely sorok külső kulcsmezőjében az adott támakör azonosítója szerepel.
"dióhéjban"
pl egy ilyen táblával (postnuke szerűen)
userid(groupid) -nél meg lehet még 0 a "regisztrálatlan"
pl:
orderre azért van szükség, hogy amikor új jogosultságot illesztesz a táblába, meg tudd határozni milyen sorrenben találja meg az ellenőrző függvény.
a postnuke jogosulságkezelése is kb erről szól, csak ott az elemet amire a jogosulság vonatkozik regexp-el adja meg a tábla, és modulonként. a modulok pedig saját séma szerint nézik a kulcsokat
pl cikkeknél a séma "kategória:cikkid"
pl "2:1" az adott cikkre, és ilyen jogok vannak h ".*", "2:.*" (összes, 2es kat összes)
vagy szavazásnál a sáma "szavazásid:", pl "3:" az adott szavazásra
a drupaléba még nem ástam bele ennyire magam, de ott azt hiszem megadott lehetőségek (x modul definál y jogot pl: "kommentek/új komment", vagy "keresés/keresés az oldalon" és arra lehet "igen/nem" az engedély felhasználói csoportonként)
na de most már alszom :D
danke
Ezen a nyomon el tudok indulni.
tesztkérdés
1. Tehát ha a postnuke módszerét követem, akkor az általad megadott kód valahogy így módosul:
2. „...az elemet amire a jogosulság vonatkozik regexp-el adja meg a tábla, és modulonként.”
Pontosan mit jelent az, hogy „modulonként”? Modulonként más módon?
.
én valami ehhez hasonlót csinálok (mysql):
az $itemben "2:" van ha kategóriát nézel, "2:1" ha cikket, és ":" ha általánosan
az adatbázisban pedig a regexpes stringek: ".*", "2:.*" "2:1"
megj: az előbb fordítva írtam a pédában a 3as és 4es jogot, értelemszerűen amelyiket előrébb rakod, azt fogja hamarabb megtalálni ez a lekérdezés
2
a postnuke-ben van még egy varchar a táblában ami a 'komponens'-re vonatkozik, abban van a modul neve és az is regexpes, pl regisztrált felhasználóknak [module:.*, .*, comment] a joguk, de a [module:admin, .*, none]
vagy a blokkoknak "block:<block_title>" alapján (pl adminmessages blokk lehet így elrejtve a felhasználók elől)
(ott 'none', 'overview', 'read', 'comment', 'moderate', 'add', 'edit', 'delete' és 'admin' jogok vannak 0-tól 8-ig számozva)
regexp
A fenti példák nekem így működnek "^2:1", "^2:.*" és "^3:".
phpgacl
Felhő