routovani do administratorskeho rozhrano
- jirkamailto
- Člen | 27
Dobry den,
potreboval bych jednak routovat do administratorskeho rozhrani a pote ochranit administratorske rozhrani oproti neopravnenemu pristupu.
Mam dve moznosti:
- zaridit to pres routy
- v kazdem presenteru pred kazdou cinnosti kontrolovat, zdali je uzivatel nalogovan
Zatim mam prvni variantu a v bootstrapu mam nasledujici:
if ($user->isLoggedIn() && $user->isInRole('admin'))
{
$router[] = new Route('admin/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'presenter' => 'MainPage',
'action' => 'default',
'id' => NULL,
), Route::SECURED);
}
Pri prvnim prihlaseni se mi objevi „500 internal server error“ a v chybe je ze neexistuje routa na administratorske rozhrani. Provedu refresh stranky se znovuodeslanim informaci a vse jiz funguje. Potreboval bych se zeptat, jak tuto chybu odstranit a jestli je to spravny pristup. Predem dekuji za odpovedi.
- redhead
- Člen | 1313
A proč zabezpečuješ route? Routu nech tak jak je, tzn. žádný if(), a zebezpeč BasePresenter v administračním modulu, v metodě startup (pokud není přihlášen, redirectne na nějaký přístupný presenter, z hláškou, že nemá opravnění; pokud má, pak je vše v pořádku).
Btw je to logické, copak může vědět na kterou stránku jít, pokud neexistuje pro tu stránku routa? Přihlášení se stejně provede až v nějakém presenteru (ne v bootstrapu před definicí rout), proto to jde až po refreshi.
- jirkamailto
- Člen | 27
Dekuji za namet, snazim se to dat do base presenteru. Mam s tim ale trochu problem, mam v defaultni adresarove strukture adresar presenter. V nem BasePresenter:
abstract class BasePresenter extends Presenter
{
public $oldLayoutMode = FALSE;
public function beforeRender() {
}
}
V adresari presenter mam dale adresar AdminModule a v nem BasePresenter pro admin rozhrani:
abstract class Admin_BasePresenter extends BasePresenter
{
public $oldLayoutMode = FALSE;
public function beforeRender() {
$this->template->control = "sdfsdf";
}
}
Bohuzel nic z toho administratorskeho base presenteru se mi nevypisuje. Musim nekde nastavit, aby v pripade vstupu na admin rozhrani se vzal BasePresenter z AdminModule?
- jirkamailto
- Člen | 27
Prave jsem to udelal u FrontModule, coz ma uplne stejnou adresarovou strukturu jako AdminModule, a pise mi to chybu
Class ‚Front_BasePresenter‘ not found
Mam v adresari FrontModule soubor BasePresenter.php
abstract class Front_BasePresenter extends BasePresenter
{
}
a napriklad Domovska stranka HomepagePresenter.php
class Front_HomepagePresenter extends Front_BasePresenter
{
}
Nevite kde muze byt chyba?
- jansfabik
- Člen | 193
jirkamailto napsal(a):
Prave jsem to udelal u FrontModule, coz ma uplne stejnou adresarovou strukturu jako AdminModule, a pise mi to chybu
Class ‚Front_BasePresenter‘ not found
Mam v adresari FrontModule soubor BasePresenter.php
abstract class Front_BasePresenter extends BasePresenter { }
a napriklad Domovska stranka HomepagePresenter.php
class Front_HomepagePresenter extends Front_BasePresenter { }
Nevite kde muze byt chyba?
pokud používáš RobotLoader
, tak zkus promazat
složku app/tmp
- jirkamailto
- Člen | 27
Dobry vecer, dekuji vsem, uz to funguje. Pomohlo smazani tempu base presenter uz jede z modulu. Do metody startup jsem dal overeni uzivatele a take funguje.