nette vlastní authenticator výjimky

endy
Člen | 18
+
0
-

Zdravím vytvořil jsem si vlastní authenticator, který ipmplementuje rozhraní Nette\Security\IAuthenticator.
Trochu jsem se inspiroval autentikatorem z https://doc.nette.org/…thentication#…
a napsal výjímky pokud není uživatel nalezen nebo je heslo chybné.

throw new \Nette\Security\AuthenticationException('Uživatel nenalezen')

Teď ale popravdě nevím jak dál lze na ty výjimky nějak nastavit chybové zprávy ? Jelikož v běžném přihlašování uživateli při zadání chybného hesla taky nevyletí výjimka.

Děkuji.

Editoval endy (21. 11. 2018 16:02)

Ondřej Kubíček
Člen | 494
+
0
-

a jak a kde si tu vyjímku zpracuješ?

měl bys tam mít něco takového jako je v sandboxu

endy
Člen | 18
+
0
-

Tu výjimku zpracovávám v base presenteru v

public function LoginFormSuccess(Form $form) {

       try {
         $user= $this->getUser();
         $values = $form->getValues();
         $user->login($values->usernameL, $values->passwordL);

        } catch (Nette\Security\AuthenticationException $e) {

            $form->addError('error');

      }

       }

Teď jsem si ale všiml, že editor vypisuje, že hodnota $e se zdá být nenastavená.

Ondřej Kubíček
Člen | 494
+
0
-

a jak vypisuješ v šabloně tu chybu? respektive celý ten form? pokud jej vykresluješ manuálně je potřeba i manuálně vypsat error

CZechBoY
Člen | 3608
+
0
-

btw Ne nenastavena ale nepouzita.

endy
Člen | 18
+
0
-

Ondřej Kubíček : Ten form tvořím továrnou taky v base presenteru aby byl ten form přístupný odkudkoli.

CZechBoY: Ano nepoužitá ale nevím proč nemělo by to ten exception zachytit ?

Ondřej Kubíček
Člen | 494
+
0
-

na to jsem se neptal

ptám se na to jak samotný formulář vypisuješ v šabloně

takhle

{control loginForm}

nebo

<form n:name="loginForm"> ...

??

protože první způsob ti musí fungovat, u druhé jak už jsem psal, bys musel přidat manuální vykreslení errorů, což bych řekl, že ti tam ted chybí, proto nevidíš tu error formuláře

endy
Člen | 18
+
0
-

První variantou.

Ondřej Kubíček
Člen | 494
+
0
-

a zachytí ti vubec ten catch tu exception? debugoval jsi to a došel na ten řádek, kde přidáváš error do formuláře?
máš to vubec v té třídě co implementuje IAuthenticator správně, vyhodí se vubec ta vyjímka?

endy
Člen | 18
+
0
-

Ten catch tu exception právě nezachytí. Ale výjímka se vyvolá.

Editoval endy (22. 11. 2018 9:45)

Tomáš Vodička
Člen | 28
+
+4
-

Myslím, že ti chybí lomítko na začátku v definici exception, proto ti jí to nikdy nezachytí

	catch (\Nette\Security\AuthenticationException $e)
endy
Člen | 18
+
0
-

Je to tak děkuji všem za pomoc.

Ondřej Kubíček
Člen | 494
+
+1
-

lol :D

ty jo, používej autodoplnování, tahle chyba by pak nikdy nenastala