Nastavení práv/rolí ACL v Nette 2.0 (PHP5.3)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
imartyn
Člen | 9
+
0
-

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
+
0
-

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
+
0
-

ViPErCZ napsal(a):

https://doc.nette.org/…thentication#…

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
+
0
-

Š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:

  1. Pokud není uživatel přihlášen, automaticky nastavím právo guest
  2. 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
+
0
-

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
+
0
-

imartyn napsal(a):

ViPErCZ napsal(a):

https://doc.nette.org/…thentication#…

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
+
0
-

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.)