GUI pro dynamické Acl (Access Control List)
- Bernard Williams
- Člen | 207
Nazdárek,
napsal jsem grafické rozhraní pro správu přístupových práv.
- Podpora pro modulární aplikace (celé GUI je v jednom modulu).
- Instalace podporuje PostgreSQL nebo MySQL.
- Přes GUI lze spravovat vše potřebné pro třídu Permission – tj.: privilegia, zdroje, role, uživatele a pravidla přístupů.
- Podpora pro stromové struktury (role, zdroje).
- Obsahuje ukázkovou aplikaci.
- Popis instalace je součástí archivu.
Ocenil bych jakoukoliv kritiku, nápady, připomínky, dotazy.
Stránce s doplňkem: GUI for Acl
Download: GUI for
Acl
Aktuální verze: 2.0
Testováno na:
PHP: 5.3.5
Apache: 2.2.17
Nette Framework: 2.0.4
S pozdravem
Bernard
Editoval Bernard Williams (21. 5. 2013 23:02)
- BigCharlie
- Člen | 283
Tak se přimlouvám za screenshot, protože při snaze o vyzkoušení mě
zastavila hláška Resource 'ceska_sporitelna' does not exist.
.
A při letmém nahlédnutí do kódu demonstrační stránky se mi nechce
definovat tolik zdrojů :-(
Nebo funkční demo?
- Cifro
- Člen | 245
V DB v tabuľke gui_users
si treba zmeniť heslo pre admina,
pomocou md5(nove heslo), lebo nikde nie je zmienené aké je heslo…
A login je na /gui-for-acl-1.0/document_root/front/login/
. Po
prihlasení to zase presmeruje na Front:Default:Default a vyhodí tú Excpetion
ale stačí zmeniť url napr. na
/gui-for-acl-1.0/document_root/acl/users/
a ste tam.
- Bernard Williams
- Člen | 207
Hodil jsem na web nějaké náhledy – viz. první post.
Do archivu jsem zapomněl přidat dump databáze pro demo stránku – omlouvám se. Teď už to dump obsahuje (PostgreSQL/MySQL), proto stahujte – odkaz viz. první post.
Cifro napsal(a):
V DB v tabuľke
gui_users
si treba zmeniť heslo pre admina, pomocou md5(nove heslo), lebo nikde nie je zmienené aké je heslo…
Hesla jsou stejné jako jméno – tj. pro uživatele Admin je nastavené heslo Admin. Tohle je napsané na demonstrační stránce, ale protože jste neměli DB data, tak to házelo chybu o neexistujících zdrojích atd.
Cifro napsal(a):
A login je na
/gui-for-acl-1.0/document_root/front/login/
. Po prihlasení to zase presmeruje na Front:Default:Default a vyhodí tú Excpetion ale stačí zmeniť url napr. na/gui-for-acl-1.0/document_root/acl/users/
a ste tam.
Divné.. Tohle se mi nestalo a to jsem to teď zkoušel nově instalovat. Zkus si to znovu stáhnout a importovat demo DB.
- Cifro
- Člen | 245
Už je to OK :)
Len… v config.ini je zlá voľba database.dbname
a má byť
database.database
, a nezabudnite si zmeniť driver v configu,
importol som mysql a papuľovalo že nemam pgdriver :D
Zabudol som poďakovať za toto GUI for ACL, určite pomôže, vďaka :)
Editoval Cifro (20. 4. 2010 13:17)
- Bernard Williams
- Člen | 207
Cifro napsal(a):
Len… v config.ini je zlá voľbadatabase.dbname
a má byťdatabase.database
, a nezabudnite si zmeniť driver v configu, importol som mysql a papuľovalo že nemam pgdriver :DZabudol som poďakovať za toto GUI for ACL, určite pomôže, vďaka :)
No ono to ani tak není „zlá voľba“. V PostgreSQL funguje dbname a v MySQL zase database. Nevím jak je to v nových verzích dibi, ale v té mé to musím rozlišovat.
- Jakub Šulák
- Člen | 222
Možná trochu „povrchní“ připomínka, ale…
Začínají se tvořit komponenty s „tváří“. To je super, ale trochu
mě mrzí jedna věc – ke každé použité komponentě je nutné
nakopírovat X obrázků/ikon, Y javascriptů, apod.
Samozřejmě, mohu si komponentu přepsat (template), na své ikony, apod. –
ale to je práce navíc.
Osobně bych možná otevřel debatu nad tím, zda nepoužívat nějaké UI pro komponenty. Nový „Falešný datagrid“ již začal – používa Jquery UI.
Výhodu spatřuji v:
- není nutné pro každou komponentu kopírovat „její ikony“
- komponenty jsou si podobné
- jednoduše mohu změnit styl celé aplikace (všech komponent), změnou tématu, nebo napsáním vlastního
- Etch
- Člen | 403
Bylo by potřeba aby si tam dořešil mazání uzlů a úklid v db.
- Pokud smažeš třeba resource tak by se měla uklidit tabulka „gui_acl“, aby tam nezůstávaly nesmyslné (nepotřebné) řádky.
- Mazání uzlů je dost dobře nepoužitelné, protože se nesmažou potomci. Bylo by tedy potřeba dodělat smazání všech potomků při mazání uzlů ať již rekurzí či jiným mechanismem.
EDIT: Dále by bylo možná dobré používat modely.
Editoval Etch (22. 4. 2010 12:28)
- Bernard Williams
- Člen | 207
Etch napsal(a):
Bylo by potřeba aby si tam dořešil mazání uzlů a úklid v db.
- Pokud smažeš třeba resource tak by se měla uklidit tabulka „gui_acl“, aby tam nezůstávaly nesmyslné (nepotřebné) řádky.
- Mazání uzlů je dost dobře nepoužitelné, protože se nesmažou potomci. Bylo by tedy potřeba dodělat smazání všech potomků při mazání uzlů ať již rekurzí či jiným mechanizmem.
V PostgreSQL mi tohle hlídají cizí klíče, takže tohle dořešené mám. Ty nejspíš používáš MySQL, když ti to nejde. Je pravda, že tam jsem ty cizí klíče neexportoval, protože si nejsem úplně jistý o jejich funčnosti (jestli to funguje stejně jako v PostgreSQL).
- Bernard Williams
- Člen | 207
Já primárně dělám v PostgreSQL. Do MySQL jsem to exportoval jen kvůli komunitě.
Teď jsem na to koukal do dokumentace a cizí klíče fungují opravdu jen v InnoDB, což je možná důvod, proč mi doma nefungovaly. Hned jak bude chvilka, tak to převedu na InnoDB a cizí klíče dodám.
- Honza Kuchař
- Člen | 1662
Vypadá to hodně dobře. Nechceš to přidat do extras? Ať je to na jednom místě.
- Bernard Williams
- Člen | 207
Etch napsal(a):
Předpokládal sem, že to v PgSQL budeš mít udělané přes cizí klíče. Ale pokud to tak je tak nechápu proč si pro mysql nepoužil InnoDB, ale MyISAM. Proto sem také psal „vyřešit jiným mechanismem“.
Tak jsem to převedl do InnoDB a vložil cizí klíče. Změny jsou už v archivu, takže si to můžeš stáhnout.
honzakuchar napsal(a):
Vypadá to hodně dobře. Nechceš to přidat do extras? Ať je to na jednom místě.
Ještě bych rád počkal na nějaké další odezvy a pak to tam hodím.
- Bernard Williams
- Člen | 207
Mám asi hloupou otázku, ale potřeboval bych poradit, jak mohu přidat nějaký projekt do Google Code. Nikde tam nevidím žádný odkaz.. Nebo je to jen pro „vyvolené“? Rád bych tam umístil tento doplněk. Díky
- wopice
- Člen | 21
Bernard Williams napsal(a):
Mám asi hloupou otázku, ale potřeboval bych poradit, jak mohu přidat nějaký projekt do Google Code. Nikde tam nevidím žádný odkaz.. Nebo je to jen pro „vyvolené“? Rád bych tam umístil tento doplněk. Díky
- Bernard Williams
- Člen | 207
wopice napsal(a):
Díky, to jsem přesně hledal.
honzakuchar napsal(a):
Vypadá to hodně dobře. Nechceš to přidat do extras? Ať je to na jednom místě.
Je to tam. Je to má první stránka tady na wiki, takže kdyby ji chtěl kdokoliv upravit, doplnit, tak jen směle do toho :-)
Editoval Bernard Williams (30. 4. 2010 18:56)
- Bernard Williams
- Člen | 207
honzakuchar napsal(a):
Ještě bych tam doplnil, pro kterou veri PHP to je.
Ta by měla být dána verzí Nette. Samotná aplikace nevyužívá nic speciálního z PHP.
- Bernard Williams
- Člen | 207
hrach napsal(a):
bylo (asi) myšleno jestli PHP 5.2 nebo 5.3…(namespace)
To mě napadlo, a proto jsem taky uvedl, že samotná aplikace nevyužívá nic speciálního (jako např. namespace).. Ale abych to nějak uzavřel, tak aplikaci jsem psal pod PHP 5.2. Na PHP 5.3 jsem to netestoval.
- Bernard Williams
- Člen | 207
@sin: Tohle je popsáno v souboru install.cs.txt uvnitř archivu.
PostgreSQL používá dbname
, ale MySQL database
.
- Bernard Williams
- Člen | 207
lopikol: Můžeš to použít jako již kompletní administraci pro ACL. Rozšíření je nutné pouze v případě speciálních požadavků.
- roarbb
- Člen | 29
Funguje to super, dakujem :) Mam len jeden maly problem. Potreboval by som aplikaciu spustat z rootu, teda premiestnit index.php z „/document_root“ do „/“. Prepisal som v indexe cestu k WWW_DIR. Teraz vsak nefunguje http:/ /localhost/moja_aplikacia/front/login/. Hlasi 404 :/
Dakujem za kazdu radu zaciatocnikovi.
Editoval roarbb (12. 4. 2011 21:08)
- Bernard Williams
- Člen | 207
roarbb: Konstantu WWW_DIR nech beze změny – ta se určí sama podle umístění souboru index.php. Z konstant APP_DIR a LIBS_DIR* odstraň „../“ a mělo by to vše jít. Pro jistotu si ještě smaž obsah složky temp.
- Bernard Williams
- Člen | 207
V sekci Permission bys měl mít v MultiSelectu možnost „- All resources -“ a „- All privileges -“.
- thool
- Člen | 6
:) No tak potom není co řešit.
mimochodem soubor PermissionPresenter.php line 83 – tabulka TABLE_PRIVILEGES je tam hardcoded, hodilo by se spíš
$rows = dibi::fetchAll('SELECT id, name FROM ['.TABLE_PRIVILEGES.'] ORDER BY name;');
Jinak dobrá práce tohle ACL GUI, díky.
Editoval thool (18. 8. 2011 21:40)
- Bernard Williams
- Člen | 207
Nazdárek,
aktualizoval jsem svůj doplněk pro PHP 5.3. a Nette 2. Taky jsem odstranil nějaké chyby a nedostatky. Než jej ale oficiálně „vydám“, tak bych byl rád, kdyby jste jej odzkoušeli na různých verzích Nette – já to testoval na Nette 2.0.4.
Novou verzi doplňku si můžete stáhnout zde: GUI for Acl 2.0
Bernard
- Prokop
- Člen | 31
Měl bych jednu úpravu/nápad.
Jak by se řešilo upravení přístupu do ACL abych jako např. uživatel
s právy Informačního technika(viz.Demo) mohl přidělovat role níže
postaveným rolím (dle Dema = Administrátor a IT technik).
Abych jakožto vedoucí mohl tyto role rozdělovat/měnit.
Add1: Abych jako tento „podřadnější“ uživatel neviděl ty ostatní v jiné větvi + mně nadřazenou roli.
Už to někdo řešil? :)
Jinak hodně díky za addon, konečně jsem někde našel jak vhodně spravovat role přes db a i nástroj k tomu. +1 :)
Editoval Prokop (25. 3. 2013 0:43)
- Bernard Williams
- Člen | 207
2 Prokop: Asi by sis musel implementovat vlastní metodu isAllowed, kde budeš zohledňovat váhu/oprávnění jednotlivých rolí a pokud bude vyšší, tak vrátíš FALSE a pokud nižší, tak vrátíš parent::isAllowed.
- Bernard Williams
- Člen | 207
2 piskotek: Stejný případ jako u uživatele Prokop. Nejjednodušší by
asi bylo rozšířit/doplnit metodu isAllowed
ve třídě
PermissionModel
. Jednoduchý nástřel:
public function isAllowed($role, $resource, $privilege) {
if (!$isAuthor)
return false;
else
return parent::isAllowed($role, $resource, $privilege);
}
Samozřejmě místo proměnné $isAuthor
si doplň vlastní
rozhodovací logiku. Nejspíš budeš muset třídě
PermissionModel
předávat objekt s uživatelem.
Editoval Bernard Williams (21. 5. 2013 22:59)