Nejlepší zhůsob jak předat identitu do autorizátoru
- Marsme
- Člen | 75
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
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
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
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.