Omezení práv u Form a url

Koupilsemto
Člen | 38
+
0
-

Zdravím chtěl bych se zeptat jak můžu omezit přístupová do formy nebo url aby si kdokoliv nemobl do url napsat /edit

protected function createComponentPostForm() {
        $form = new Form;
        $form->addText('ev_cislo', 'Evidenční číslo práce:')
                ->setRequired();
        $form->addText('prace', 'Název práce:')
                ->setRequired();
        $form->addText('ajmeno', 'Příjmení a jméno autora:')
                ->setRequired();
        $form->addSubmit('send', 'Uložit');
        $form->onSuccess[] = [$this, 'postFormSucceeded'];
        return $form;}

V latte mám {control postForm}
Je možné použít macro n:if=„$user->isInRole(‚admin‘)“ popř. jak nato?

Editoval Koupilsemto (31. 5. 2018 13:48)

CZechBoY
Člen | 3608
+
0
-

jo, můžeš použít buď $user->isInRole() nebo to dát opravdu na oprávnění a použít $user->isAllowed().

Nejlepší by bylo ani takový prvek nevytvářet (kontrolovat oprávnění už při tvorbě formuláře), případně vytvořit jen hidden field.

Koupilsemto
Člen | 38
+
0
-

Tlačítka v menu jsem schoval výše uvedeným macrem aby nato nešlo kliknout ale ten kdo znal url tak ji mohl zadat ručně tak jsem vytvořil toto

<article n:if="$user->loggedIn">
    {include content}
</article>

Mohl bych tě poprosit o ukázku toho jak se dá omezit {control postForm} v edit.latte pomocí $user->isInRole() nebo form v pressenteru? Chtěl bych každé nastavit jiná práva ale nějak mi to nejde do hlavy.

Editoval Koupilsemto (31. 5. 2018 14:38)

Koupilsemto
Člen | 38
+
0
-

Promin už mu to došlo díky moc za rady. Hotovo…

CZechBoY
Člen | 3608
+
0
-

Pokud nechceš aby někdo na tu url chodil někdo bez práv tak musíš implementovat Presenter::checkRequirements metodu v presenteru (nebo ještě ve startup metodě se to dělá).

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