Nejlepší zhůsob jak předat identitu do autorizátoru

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

Potřebuji si napsat vlastní autorizátor který bude dynamicky tvořit pravidla pro přístup podle dat v db. Na to abych si vytáhl data potřebuji ideálně ID uživatele které je v identitě.

Je nějaký způsob funkční který mi dovolí předat identitu přihlášeného uživatele aniž bych si způsobil Circular reference ?

enumag
Člen | 2118
+
0
-

Osobně jsem nakonec zahodil Nette/Security a napsal si vlastní knihovnu. Z Nette/Security používám jen UserStorage. :-)

Marsme
Člen | 75
+
0
-

A dostupná někde náhodou není? Trochu mi příjde nešťastné jak je toto v nette napsané. Chtít identitu v autorizátoru mi příjde jako docela legitimní požadavek a udělat to čistě moc nejde…

enumag
Člen | 2118
+
0
-

Jistěže to je legitimní požadavek, psal jsem k tomu RFC už 3 roky zpátky – https://forum.nette.org/…r-a-identita. :-)

Knihovna není veřejná, ale chtěl jsem ji dát ven. Jen jsem nějak neměl chuť zamýšlet se nad okrajovými případy s jejichž řešením nejsem úplně spokojen a na tom se to zaseklo. Jestli chceš můžu z tebe udělat beta testera a dotáhneme to společně. Napiš e-mail kdybys měl zájem.

Marsme
Člen | 75
+
0
-

RFC co jsi napsal jsem celé prošel a docela mě mrzí že to od té doby spí a nic se nezměnilo.

Bohužel to vypadá tak že celé řešení které chci udělat budu muset odsunout. Chtěl jsem přepsat kus aplikace která již funguje a řeší autorizaci dost otravným způsobem (řeší oprávnění defakto v modelech před tím než se provede dotaz podle toho jaký user je přihlášen, s tím že v presenterech pak podle toho zda to vrací nebo nevrací data pracuje s rolemi atd ).

Nemám aktuálně bohužel čas to řešit dál ale zkusím při psaní další aplikace na to myslet a vyhranit si na to čas a zkusit to nějak vyřešit…

enumag
Člen | 2118
+
+1
-

Chápu. Imho nejlepší je řešit v oprávnění v presenteru a komponentách pomocí metody checkRequirements – až najdeš čas to řešit, hledej tohle. Osobně to z té metody ještě deleguju na službu.

Ještě jsem si jednou četl tvůj původní příspěvek – pravidla autorizátoru bys neměl generovat dynamicky na základě identity aktuálního uživatele. Pravidla jsou pro aplikaci a jsou pořád stejná. Identitu bys měl použít až v assertačním callbacku konkrétního pravidla pro ověření zda pravidlo platí pro daného uživatele a resource.

Marsme
Člen | 75
+
0
-

Ten původní příspěvek jsem spíš blbě formuloval. Pravidla měnit nepotřebuji ale potřebuji kontrolovat zda to platí pro daného uživatele tak jak píšeš.