Administrácia – login/redirect dilema

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Peppy
Člen | 137
+
0
-

Mám modul (AdminModule), v ňom HomepagePresenter, nadefinované 2 šablóny (default/login.latte)…mám takú dilemu:

Keď prejdem na http://localhost/admin/ tak uvidím login panel na prihlásenie, user (admin) zadá heslo a meno a malo by ho to redirectnúť na nejakú adresu http://localhost/admin/XXX problém je v „logike“ toho všetkého…lebo ak mám v podstate „hlúpi“ presenter Homepage, tak načo mi treba nový presenter „Main“ napr…nedalo by sa to nejak dať dokopy?

wise
Člen | 161
+
0
-

Záleží na tobě jaký presenter si u http://localhost/admin/ v bootstrapu nastavíš. Nejlíp zkus poslat ukázku kódu, moc to z toho popisu nechápu.

Peppy
Člen | 137
+
0
-

Routa:

$router[] = new Route('admin/<presenter>/<action>[/<id>]', 'Admin:Homepage:default');

Proste si predstav situáciu: Prídeš na adresu http://localhost/admin/, tam bude login. Tak sa prihlásiš a ono by ťa to malo presmerovať, povedzme na http://localhost/admin/main/. Lenže to už je druhý presenter (aspoň teda po mne to hodilo exception). A tak máš presenteri: Homepage, ktorý v podstate nič nerobí a druhý, Main, ktorý je v podstate hlavná stránka…

wise
Člen | 161
+
0
-

Tak přepiš routu na:

$router[] = new Route('admin/<presenter>/<action>[/<id>]', 'Admin:Main:default');

v MainPresenter zjisti, jestli je uživatel přihlášený nebo ne. V případě že není, tak ho přesměruj na třeba LoginPresenter, ve kterým se přihlásíš a přesměruješ zpátky na MainPresenter.
Tam už přejdeš do větve, že jsi přihlášen a načteš třeba data.

Po přihlášení budeš mít url http://localhost/admin/ a 2 presentery. Main a Login.

Pochopil jsem správně?

Editoval wise (4. 7. 2011 21:12)

Peppy
Člen | 137
+
0
-

Jak ho presmerujem? (usera)

Jan Endel
Člen | 1016
+
0
-
$this->redirect('Login:');

a

$this->redirect('Main:');
Peppy
Člen | 137
+
0
-

ale hádže mi to adresu: http://localhost/admin/admin.login/ ako to upraviť do admin/login/ ? A zase problem: keď to manuálne prepíšem na admin/login/ tak mi to hodí exception, že taká trieda nejestvuje (hľadá to v front-ende)…mám iba túto routu…

wise
Člen | 161
+
0
-

Pokud používáš redirect správně, tak bude problém v routách nejspíš. Jaký název má ta classa Login?

Btw. php 5.2 nebo 5.3?

Peppy
Člen | 137
+
0
-

PHP 5.3 / LoginPresenter, exception:

Nette\Application\BadRequestException #404

Cannot load presenter 'Login', class 'LoginPresenter' was not found in 'C:\xampp\htdocs\root\system\app/presenters/LoginPresenter.php

Routa:

$router[] = new Route('admin/<presenter>/<action>[/<id>]', 'Admin:Main:default');

Editoval Peppy (4. 7. 2011 23:06)

wise
Člen | 161
+
0
-

máš v LoginPresenter namespace AdminModule?

Peppy
Člen | 137
+
0
-

jo.

wise
Člen | 161
+
0
-

evidentně ti to nebere z AdminModule. V debug baru ti to chytá jakou routu s jakýma parametrama, když si v /admin?

Peppy
Člen | 137
+
0
-

chytá mi tú routu :) :) lebo je to jediná routa… :D ostatné sú komentované…hlási mi to aj debug bar…
Ale mi ju chytá nejako nedobre:

presenter: Admin:Main (OK)
**action: default**
id: NULL
**Request: Login:default**

Editoval Peppy (5. 7. 2011 0:09)

wise
Člen | 161
+
0
-

Nevím teda, jestli to na to má vliv, ale zkus tuhle:

$router[] = new Route('admin/<presenter>/<action>/<id>', array(
	'module'	=> 'Admin',
	'presenter'	=> 'Main',
	'action'	=> 'default',
	'id'		=> null
));
Peppy
Člen | 137
+
0
-

Haha…ono to ide! :D :D By ma zaujímalo, kde bola chyba…
a ešte by bola otázka: Ako sa dostanem z jedného namespacu do druhého? Lebo keď použijem redirect, tak to platí iba v rámci namespace… Teda mám na mysli ako redirectovať do iného namespacu…

Editoval Peppy (5. 7. 2011 0:35)

wise
Člen | 161
+
0
-
$this->redirect(":Front:PresenterName");

Editoval wise (5. 7. 2011 0:52)