Rola v UserManager a povolenia
- kasiopia
- Člen | 69
Rola v UserManager. Dobrý deň pri registrácii užívateľa v tabulke nie
je vyplnená rola užívateľa, čo mám prosím Vás upraviť.
Potom mám otázku nechcem aby som sa dostal na ďalšie latte stránke keď nie
som prihlásení. Viete mi poradiť ako nastaviť router resp server
Ďakujem za odpoveď
Pekný deň
- Václav Kraus
- Člen | 77
Pokud chceš, aby měl uživatel po přihlášení nějakou roli, tak mu ji v té tabulce users přiděl.
- Mysteria
- Člen | 797
Potom mám otázku nechcem aby som sa dostal na ďalšie latte stránke keď nie som prihlásení.
Pokud jsi tímhle myslel to, že nepřihlášený uživatel se nemůže dostat do administrace třeba změnou URL adresy, tak je potřeba dát do všech administračních prezenterů (nebo nějakého AdminBasePresenteru pokud máš) kontrolu, zda je nebo není přihlášen.
public function startup() {
parent::startup();
if (!$this->user->loggedIn) $this->redirect('Guest:login');
}
Připomínám že v případě, že to budeš dávat do nějakýho BasePresenteru, tak se musíš ujistit aby náhodou od něj nedědil i presenter kde děláš login, protože pak by jsi měl smyčku v přesměrování a musel by jsi tam přidat podmínku.
- Mysteria
- Člen | 797
Jak chceš konkrétně měnit URL? Ve výchozím nastavení se URL tvoří <názevPresenteru>/<názevAkce>. Takže já už rovnou volím názvy presenterů a akcí tak, jak chci mít URL. Takže třeba když jsem třeba dělal web pro jedno fitko tak pro výpis lekcí byl presenter LessonPresenter a akce actionList() a URL pak je automaticky lesson/list. :) Kdyby ti tohle z nějakýho důvodu nevyhovovalo tak můžeš použít překladovou tabulku.
- Mysteria
- Člen | 797
Jo tys to myslel takhle. V tom případě na to nepotřebuješ překladovou tabulku, ale jenom samostatnou routu:
// RouterFactory.php
$router[] = new Route('page/system/article', 'Task:taskpage');
A protože se bere první routa která vyhovuje tak to musí být seřazený od nejvíc specifických po nejvíce obecnou.
- Mysteria
- Člen | 797
Protože routy fungují tak, že se prochází jedna za druhou a první, která odpovídá dané URL se použije. Ta druhá routa je hodně obecná, takže bude pasovat na jakoukoliv URL. Tu tvoji page/system/article přeloží jako presenter Page, akce System a jako parametr ID bude article a protože nic takovýho v aplikaci nemáš, tak se ti zobrazí 404, že daná stránka nelze najít. Takže když ji necháš jako první, tak se to nikdy k žádný další routě nedostane a proto je nutný mít to seřazené od nejspecifičtějších až po tuhle obecnou.
- kasiopia
- Člen | 69
Ďakujem a ešte niečo kontrolu prihlásenia, kde by mal vložiť? do akého presenteru, pretože ked som dal do homepage Cannot load presenter ‚Guest‘, class ‚App\Presenters\GuestPresenter‘ was not found
public function startup() {
parent::startup();
if (!$this->user->loggedIn) $this->redirect('Guest:login');
}
Ďakujem všetkým za pomoc ale hlavne nette is clever:)
- Mysteria
- Člen | 797
Do každého presenteru, který obsahuje věci, které nemají být přístupné nepřihlášeným uživatelům. Ten kód znamená, že když není uživatel přihlášení, tak ho to přesměruje na presenter Guest a akci login. To si samozřejmě musíš upravit podle sebe, nikdo neví jak se ti jmenuje presenter a akce, kde máš přihlašovací formulář.
Editoval Mysteria (7. 2. 2016 21:13)