Co se děje po $this->restoreRequest($this->backlink);

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

Zdravím,
prosím potřeboval bych poradit. Jenom nevím jak to mám zformulovat, tak popíšu co se mi děje.

Chtěl jsem si zprovoznit automatické přesměrování na Sign:in, takže mám v nějakém SecuredPresenteru ve startupu mám:

if(!$this->user->isLoggedIn()){
                  $this->flashMessage('Pro přístup do administračního rozhraní musíte být přihlášen.');
                  $this->redirect('sign:in', array('backlink' => $this->storeRequest()));
            }

To by snad mělo fungovat, opravdu se mi to přesměruje na Sign:in a vytvoří parametr backlink.
V Sign presenteru mám metodu signInFormSucceeded($form, $values), která obsahuje

$this->restoreRequest($this->backlink);

Ono to ale asi nevykoná redirect, nebo ano?
Protože mi to hodí chybu: Role ‚user‘ already exists in the list – Exeption z Permission. Role nastavuji ve startup BasePresenteru, jinde ne – to by znamenalo, že se startup vykoná 2x – to se mi nějak nezdá?

greeny
Člen | 405
+
0
-
  1. Role bys měl nastavovat v Authorizatoru
  2. pokud vím, tak při restore request vlastně existují v jeden čas 2 requesty, takže nejspíš se vytvoří i oba presentery (a tím pádem provedou 2 startupy)
enumag
Člen | 2118
+
0
-

Neudělá to redirect ale forward. Application to odchytí a spustí nový request, tedy se znovu hledá presenter a všechno. V důsledku je to skoro totéž jako redirect s výjimkou toho že se nezmění url a vše se odehraje v rámci jediného HTTP requestu.

Editoval enumag (4. 2. 2015 15:04)

thm
Člen | 147
+
0
-

@greeny 1. Role uživateli nastavuju při přihlášení (aby byly součástí Identity), spíš jsem myslel, že ve startup BasePresenteru nastavuju resp. definugu role třídě Permission $acl->addRole(‚user‘); jenomže ona vyhazuje výjimku, když se tam nacpou dvě stejné role (pravděpodobně to tak bude i s resource), takže asi budu muset ošetřit, pokud tam už role je, tak nenastavovat (?).

@greeny, @enumag: Jinak díky, tím se mi to vše vysvětluje.

enumag
Člen | 2118
+
0
-

@thm To nemá co dělat v presenteru, mrkni sem, případně sem.

Editoval enumag (4. 2. 2015 15:25)

thm
Člen | 147
+
0
-

@enumag Díky moc za informace, celé to předělám podle tvého příkladu. Snad to můj výše popsaný problém vyřeší.

enumag
Člen | 2118
+
+1
-

@thm Ano vyřeší, za to ti ručím. ;-)

thm
Člen | 147
+
0
-

Potvrzuji, paráda :)
Ještě jednou děkuji.

Editoval thm (4. 2. 2015 16:33)

greeny
Člen | 405
+
+1
-

@thm to co zmiňoval @enumag je přesně to stejný, co jsem myslel tím „role by se neměly nastavovat v presenteru“. Setup rolí patří do Authorizatoru, setup uživatelových rolí do Authenticatoru.