Kontrola práv v signále (odoslanie formulára)

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

Tomáš Votruba v návode Jak předávat id při editaci záznamu tvrdí:

Nejdůležitějším poznatkem z celého kódu je však fakt, že práva k záznamu se musí kontrolovat i v akci, i v signálu. Odeslání formuláře je také signál (přistupný z url).

Mohol by mi niekto k tomu niečo povedať? Nepodarilo sa mi zostaviť url, kde by sa volal signál bez toho, aby sa pred tým volala akcia.

llook
Člen | 407
+
0
-

Jde o to, že se může volat jiná akce (toho stejného presenteru).

jsvelta
Člen | 39
+
0
-

Tak tak. Preštudoval som si Nette\Application\UI\Presenter->run a už mi to je jasné.

Dovod, prečo som to na prvý pohľad nevidel je ten, že moj form má všetko povinné a naviac ešte ďalšie validácie. Pri modifikovaní url, sa mi žiadne hodnoty neposlali a teda sa ani nevolal callback onSuccess.

Záver je teda taký, že tie kontroly musia byť i v signále (existencia záznamu, prístupové práva, …), lebo modifikáciou url veľmi jednoducho docielim, že sa mi volá iná akcia, než s ktorou počítam v spracovaní signálu.

jsvelta
Člen | 39
+
0
-

Ešte pridám príklady.

Správne url: http://web-con:81/…/user/edit/1?…
Volá sa akcia actionEdit(1) a po nej signál submit na komponente userForm.

Zmením na: http://web-con:81/admin/user/new?…
a mám actionNew a rovanký signál.

Ešte zmením na: http://web-con:81/admin/user?…
a mám actionDefault.

Ešte, že tie zdrojáky su pekne čitatelne :-)