Portál AbcLinuxu, 18. května 2025 17:54

Dotaz: Oprávnění uživatelů k jednotlivým funkcím CMS

Toman avatar 9.2.2009 21:50 Toman | skóre: 29 | blog: Tomanův blog | Kostelec nad Orlicí
Oprávnění uživatelů k jednotlivým funkcím CMS
Přečteno: 293×
Odpovědět | Admin
Zdravím, mám dotaz, bude velmi obecný, bohužel. Mám předem nedefinovaný počet uživatelů systému, předem nedefinovaný počet modulů v systému, jednotlivé moduly mají předem nedefinovaný počet možných akcí, jak mám co nejinteligentněji řešit, ukládat do DB informaci o tom, k jaké akci daného modulu má zvolený uživatel přístup.

Předem děkuji za veškeré nápady.
Have you tried turning it off and on again? | tomaskavalek.cz | Google
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.2.2009 23:01 Hansik
Rozbalit Rozbalit vše Re: Oprávnění uživatelů k jednotlivým funkcím CMS
Odpovědět | | Sbalit | Link | Blokovat | Admin

Co treba role zalozene na ACL. Budes mit role a kazda bude mit pravo na nejakou konkretni zaznam v modulu, nebo jenom modul a pak se bude vztahovat na vsechny zaznamy daneho modulu a nebo bude obecna a pak se bude vztahovat na vse.

Realizace by mohla vypadat treba tak ze v DB budes mit tabuklu se seznamem uzivatelu, tabulku se seznamem roli ve ktere bude navic jmeno (nebo id) modulu a zaznamu, nakonec relacni tabulku mezi uzivately a rolemi. Pokud bude id zaznamu NULL bude se dane prirazeni role vztahovat na vsechny zaznamy modulu a pokud bude i nazev modulu NULL pak se bude vztahovat globalne na vsechny moduly a zaznamy. Role pak muzes chápat jako akce a vytvorit tak role "admin", "editor", "publisher", ... 

Pak vytvoris treba roli "editor" pro modul "clanky" ... ta muze upravovat vsechny clanky
nebo roli "admin" ... ta je adminem pro vsechny moduly a jejich zaznamy
nebo roli "publisher" pro modul "clanky" a zaznam "5" ... ta muze publikovat clanek s id 5

V kazdem modulu pak budes jenom zjistovat jestli ma uzivatel roli (napr. "editor" pro upravu) pro dany modul popř. i záznam.

Muzes tam dat i nejake zavislosti a dedicnost, treba pokud ma uzivatel roli "admin" muze vse. Nejake defaultni role, napr. ze kazdy nove registrovany uzivatel ma automaticky roli "user" pro vsechny moduly, nebo ze kdyz uzivatel, ktery ma pravo vytvaret clanky nejaky vytvori dostane pro modul "clanky" a zaznam vytvoreneho clanku roli "owner" atp.

Toman avatar 10.2.2009 08:33 Toman | skóre: 29 | blog: Tomanův blog | Kostelec nad Orlicí
Rozbalit Rozbalit vše Re: Oprávnění uživatelů k jednotlivým funkcím CMS
Šlo mi spíše o to, že mám tabulku uživatelů a pak tabulku aktivních modulů v systému. A já nevím, kolik těch modulů v budoucnu budu, ale potřebuji nějakým inteligentním způsobem nastavovat, jak s tím pracovat. Např. mám modul uživatele a ten umožňuje přidat uživatele, smazat uživatele a editovat uživatele. A já chci, aby někteří uživatelé v systému mohli třeba jen zobrazit uživatele, někteří mohli jen editovat, ne mazat, atd. Ale já předem neznám počet uživatelů, ani počet modulů, a vůbec ne počet funkcí v modulu ;-)
11.2.2009 00:52 Hansik
Rozbalit Rozbalit vše Re: Oprávnění uživatelů k jednotlivým funkcím CMS

To ti s timhle pujde...

Uživatel Petr muze jen zobrazit uzivatele -> ma roli "viewer" pro modul "uzivatlele"
Uživatel Jarda muze editovat -> ma roli "editor" pro modul "uzivatele"
Uživatel Pepa muze editovat i mazat -> ma roli "editor" pro modul "uzivatele" a zaroven roli "deleter" pro modul "uzivatele"
(pojmenovani roli a modulu je samozrejme libovolne)

V modulu kontrolujes jen role a pak je na tobe kolik si vytvoris uzivatelů.
Kdyz nekdy v budoucnu pridas nejaky modul tak v nem zas budes kontrolovat jen role a pak je opet na tobe, kterym uzivatelům, které role dáš... proste se vyvori jen zaznam do jedne ze zminenych tabulek (na to by mohl byt nejaky modul "udelovac prav" do ktereho by mel pristup jen uzivatel s id=1 tedy neco jako root)

Toman avatar 11.2.2009 09:05 Toman | skóre: 29 | blog: Tomanův blog | Kostelec nad Orlicí
Rozbalit Rozbalit vše Re: Oprávnění uživatelů k jednotlivým funkcím CMS
Díky za odpověď. Jde ale o to, že počet činností není v každém modulu omezen jen na tři, např. kalendář - vytvářet kalendář, vkládat událost, mazat událost, mazat kalendář, procházet kalendář ostatním. A pokud to budu chtít ošetřit přímo na úrovni procesů, tedy nejnižší, tak to bude, podle mne, problém. Hlavně i v případě, kdy budu chtít, aby uživatel byl v jednom modulu jako "editor" a v druhém "viewer". On v tom tedy není přímo problém, ale snažím se od zkušenějších získat návod na nějaké inteligentní řešení, protože představu nějakou mám, ale abych to nedělal od počátku příliš komplikovaně.

Díky
11.2.2009 13:42 Hansik
Rozbalit Rozbalit vše Re: Oprávnění uživatelů k jednotlivým funkcím CMS

Neni zač...  škoda, že si nejako asi nerozumime :-) Koukni se kdyztak na tenhle plugin: http://github.com/DocSavage/rails-authorization-plugin/tree/master kromě tabulky kde jsou uživatele používa dve pro autorizaci a muzes mit kolik chces modulu, kolik chces akci/roli...

Josef Kufner avatar 12.2.2009 22:22 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Oprávnění uživatelů k jednotlivým funkcím CMS
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pak se ještě nabízí druhá, s tímto velmi těsně související, otázka: Jak řešíš kontrolu oprávnění vrámci každého modulu? Nebo jak byste to řešili?
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.