Nastavení práv/rolí ACL v Nette 2.0 (PHP5.3)
- imartyn
- Člen | 9
Dobrý den,
není prosím vás někde podrobný návod a vysvětlení nastavování práv pro Nette 2.0 (PHP5.3)? Procházel jsem si různé články i fórum, ale nějak nemůžu přijít na to, jak to funguje.
Zatim mám jen vytvořené tabulky v databázi:
Pravo
CREATE TABLE IF NOT EXISTS Pravo
(
ID INT NOT NULL AUTO_INCREMENT,
nazev VARCHAR(20),
CONSTRAINT pk1 PRIMARY KEY(ID)
)
Uzivatel
CREATE TABLE IF NOT EXISTS Uzivatel
(
ID INT NOT NULL AUTO_INCREMENT,
jmeno VARCHAR(80),
login VARCHAR(80),
heslo CHAR(50),
id_pravo INT,
CONSTRAINT pk2 PRIMARY KEY(ID),
CONSTRAINT fk FOREIGN KEY(id_pravo) REFERENCES Pravo(ID)
)
Editoval imartyn (18. 1. 2013 16:17)
- Šaman
- Člen | 2666
Na práci s ACL žádnou databázi nepotřebuješ, viz odkaz od Vipera. Samozřejmě si role, zdroje, povolenky a oprávnění můžeš uložit do databáze, namísto defonování v souboru. Tak to dělá i tento doplněk, který můžeš buď využít tak, jak je, nebo se v něm inspirovat.
- imartyn
- Člen | 9
ViPErCZ napsal(a):
Tuhle dokumentaci jsem si přečetl, akorát nevím kam psát daný kód a
jak mám definovat resources a privilege.
Resources jsou názvy presenterů a privilege
názvy akcí v presentéru? Tomu hlavně nerozumím.
- imartyn
- Člen | 9
Šaman napsal(a):
Na práci s ACL žádnou databázi nepotřebuješ, viz odkaz od Vipera. Samozřejmě si role, zdroje, povolenky a oprávnění můžeš uložit do databáze, namísto defonování v souboru. Tak to dělá i tento doplněk, který můžeš buď využít tak, jak je, nebo se v něm inspirovat.
Není potřeba v databázi určit, který uživatel má jaké právo? A jak
tedy přidělím role (čtenář = guest, registrovaný, administrátor)
uživatelům? Podle čeho tu roli přiřadím?
Nevím zda jsem pochopil princip přidělování práv. Ale mám za
to, že:
- Pokud není uživatel přihlášen, automaticky nastavím právo guest
- Když se uživatel přihlásí tak:
- zjistí jeho identitu
- vytáhne z databáze sloupec právo, kde např. bude 2 (člen)
- tím vlastně zjistím, jaké má uživatel právo tudíž bude podmínka, něco jako: když právo = 2 → přidej roli → member
Funguje to takhle nebo jsem uplně mimo?
- jiri.pudil
- Nette Blogger | 1032
Funguje to takhle nebo jsem uplně mimo?
ACL v Nette je jen obecný autorizační mechanismus. Funguje to tak, jak si to napíšeš; resource může být cokoliv, co chceš za resource považovat. Může to být název presenteru, může to být název entity, může to být něco úplně jiného. Můžeš to mít všechno uložené v databázi, ale taky třeba v configu. To všechno je záležitost tvé implementace.
- ViPEr*CZ*
- Člen | 817
imartyn napsal(a):
ViPErCZ napsal(a):
Tuhle dokumentaci jsem si přečetl, akorát nevím kam psát daný kód a jak mám definovat resources a privilege.
Resources jsou názvy presenterů a privilege názvy akcí v presentéru? Tomu hlavně nerozumím.
No nemyslím si, že bych byl guru… ale tam to je psaný, že to snad už lehčeji nejde.
- Tomáš Votruba
- Moderator | 1114
Koukals na Planette? Tam je to pěkně
vysvětlené
(Pokud by ti dělalo problém to nasadit na aktuální Nette, tak počkej do
neděle. Právě probíhá update.)