Nextras\secured-links neupraví odkaz

roman.campula
Člen | 60
+
0
-

Zdravím,
z jedné Posoboty jsem se dozvěděl o nextras\secured-links pro ochranu handle metod. Pokud to však implementuji, tak se v odkazech vůbec nic nezmění, žádný token tam není. Co všechno se musí pro zprovoznění udělat?

Presenter:

<?php
/**
 * TestPresenter.php
 */

namespace App\WebModule\Presenters;

use Nextras\Application\UI\SecuredLinksPresenterTrait;

/**
 * Test
 *
 * @package App\WebModule\Presenters
 */
class TestPresenter extends \App\AppModule\Presenters\BasePresenter {
  /**
   * Konstruktor
   */
  function __construct() {
    parent::__construct();
  }

  /**
   * @secured
   */
  public function handleSmazat($id) {
    $this->flashMessage("Smazano", "success");
    $this->redrawControl();
  }
}

?>

Šablona:

<a n:href="smazat!" class="ajax">smazat</a><br>
<a href="{link smazat!}" class="ajax">smazat</a><br>
<a href="{plink smazat!}" class="ajax">smazat</a>
hrach
Člen | 1834
+
0
-

Mrkni na dokumentaci: https://github.com/…cured-links/

roman.campula
Člen | 60
+
0
-

Já mám pocit, že právě přesně takto jsem postupoval.

jiri.pudil
Nette Blogger | 1028
+
+1
-

Kde používáš tu traitu? V souboru, co jsi poslal, sice máš use Nextras\Application\UI\SecuredLinksPresenterTrait, ale v presenteru už nikoliv; máš ji tedy v BasePresenteru, jak doporučuje dokumentace?

roman.campula
Člen | 60
+
0
-

Jo tak, ono to musí být až v samotné třídě Presenteru… Tak to jsem se svými chabými znalostmi netušil, že klíčové slovo use lze použít i jinde než přímo na nejvyšší úrovni souboru (jako use Nette apod.). Už to něco dělá, tak to snad rozběhnu.

Děkuji

Marek Bartoš
Nette Blogger | 1146
+
+3
-

Pro ujasnění – use na začátku souboru se používá, aby jsi nemusel uvádět celý namespace třídy, use uvnitř třídy se používá pro traity. Ty ti přidávají nové metody nebo překrývají metody předka.