Zdravim mam takovej problem - nemuzu prijit na nejake efektivni reseni uzivatelskych prav :'(
Potrebuju abych mohl uzivatelum nastavit prava na:
1) a) zobrazeni uzivatelu
b) editaci uzivatelu
c) editaci opravneni u uzivatelu (zde bude zase omezeni ze uzivatel ktere bude mit opravneni odpovidajici moderatorovi nebude moct nastavovat moderatory a administratory ale napr. jenom redaktory a korektory atd..)
d) mazani uzivatelu
(zde jeste s omezenim na zobrazeni urcitych druhu uzivatelu - napr. nemuze zobrazit, smazat ani upravit uzivatele s nejvyssimi pravy atd..)
2) a) zobrazeni clanku v urcite kategorii
b) editaci clanku v urcite kategorii
c) pridavani clanku v urcite kategorii
d) editaci clanku v urcite kategorii
3) hlavni nastaveni webu
Rekneme ze budu mit tabulku uzivatelu:
uzivatele
id (INT) | jmeno (VARCHAR) | heslo (CHAR)
-----------------
1 | Pepa | (md5ka hesla)
Tabulka kategorii vypada takhle:
kategorie
id (INT) | nazev (VARCHAR) | url (VARCHAR) |
--------------------
1 | Hlavni | hlavni
Zatim me napadlo tohle reseni:
1) predelat tabulku uzivatele na tuto strukturu:
uzivatele
id (INT) | jmeno (VARCHAR) | heslo (CHAR) | (ENUM('superadmin', 'admin', 'moderator', 'korektor', 'redaktor', 'uzivatel')
--------------------------------------------------------------------------
1 | Pepa | md5 hesla | moderator
2) pro nastaveni prav na jednotlive kategorie toto:
uzivatel_kategorie
uzivatel_id (INT) | kategorie_id (INT) | opravneni (ENUM('zobrazeni', 'editace', 'mazani'))
--------------------------------------------------------------------------
1 | 1 | zobrazeni
3) pro config webu bude mit opravneni jen superadmin
4) pro udelovani vsech prav bude mit prava superadmin
pro udelovani prav nizsich nez je admin bude mit prava admin :-)
pro udeleni korektora a redaktora bude mit prava moderator
Akorat by me zajimalo jestli to nejde vyresit nejak efektivneji (urcite jde) a jak se vam zamlouva toto reseni? :)
Edit:
ted me napadlo jeste efektivnejsi reseni :)
tabulka opravneni - bude se tykat pouze opravneni na zobrazeni a editaci ostatnich uzivatelu
opravneni
id (INT) | nazev (VARCHAR)| priorita (tinyINT) | zobraz_prioritu (tinyINT) | edituj_prioritu (tinyINT)
1 | superadmin | 10 | 10 | 10
2 | admin | 9 | 8 | 8
3 | moderator | 7| 7 |
4 | kontrolor | 7 | 0 |
Priklad vyuziti:
Superadmin ma prioritu 10 (nejvyssi) a muze zobrazit a editovat vsechny uzivatele s prioritou 10 a niz
admin ma prioritu 9 a muze zobrazit a editovat jen uzivatele s prioritou mensi nez 9
Samozrejme by se dala ta priorita nastavit rovnou do tabulky uzivatelu... (bylo by to i rychlejsi atd..) ale musel by zde byt predpoklad, ze nebudou existovat 2 opravneni se stejnou prioritou