Dostupné některé stránky pouze po přihlášení
- Rellik
- Člen | 104
Zdravím vespolek. Mám opět jeden dotázek :) Chtěl bych pár stránek na
webu udělat dostupnými pouze po přihlášení uživatele. Zatím to mám tak,
že po přihlášení se do @layout.latte přidá další menu. To
funguje parádně. Horší už to je s tím, že když sem nepřihlášený a
znám odkaz na tyto stránky, tak se na ně v pohodě dostanu ručním
zadáním odkazu do adresního řádku prohlížeče. Studoval sem návod při
použití „Modules-Usage“, ale nějak sem ho nepobral… :(
Jde o stránky na kterých se provádí určité operace (přidaní textu,
editace současného příspěvku…) To sem provizorně ošetřil tím, že
i když se někdo na tyto „zakázané stránky“ dostane a bude chtít něco
změnit/smazat, vypíše se mu neúspěch. Jde nějak přímo zakázat přístup
na tyto stránky, aby se nezobrazily když není někdo přihlášen, ale zadá
je „natvrdo“?
Jinak myslím že to částečně souvisí s routry, jak sem se dočetl. Jelikož mi na locahlostu nefungují .htaccess používám simplerouter
use Nette\Application\Routers\SimpleRouter;
$container->router = new SimpleRouter('Homepage:default');
Napadlo mě vytvořit pole, které by obsahovalo tyto „zakázané“
stránky a ověřovat jestli je uživatel přihlášený nebo ne a podle toho
buď stránku zobrazit a nebo vypsat, že tam nemá přístup… Ale nějak mě
nenapadá jak to zprovoznit… :-/
Díky za případné nakopnutí… :)
- RDPanek
- Člen | 189
Procti toto: https://doc.nette.org/…thentication pote v presenteru, kam nechces aby se uzivatel dostal k dane akci, over, zda-li ma dostatecna prava.
- Rellik
- Člen | 104
Jo to mám:
{if $user->loggedIn}
<span class="right">{$task->date|date:'j. n. Y'}
<a href="{link EditAktuality:default id=>$task->id}">EDITOVAT</a> |
<a href="{link delete! $task->id}" onclick="return confirm('Smazat???')">SMAZAT</a>
</span>
{else}
<span class="right">{$task->date|date:'j. n. Y'}</span>
{/if}
Ale chtěl sem aby se nu stránku vůbec nedostal… i když teď mě napadá, že tak tu dotyčnou stránku můžu zakázat celou… :)
- Rellik
- Člen | 104
spidy: jo to tak mám…
Teď sem to pořešil podle návodů z odkazů od 22 tím,
že sem do všech „zakázaných“ stránek přidal navíc ověření
přihlášení:
public function startup() {
parent::startup();
if (!$this->getUser()->loggedIn) {
$this->flashMessage('Přihlašte se, prosím.');
$this->redirect('Sign:default');
}
}
Což už je myslím dostačující ochrana… :)
- PavelJurasek
- Člen | 39
A teď by mohlo být posledním krokem ještě vytvořit rodiče (třeba SecuredPresenter) všech zabezpečených presenterů a řešit to pouze v něm. A nebudeš muset mít v každém presenteru duplicitní kód.