Automatické přihlášení po registraci – kruhová závislost

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

Zdravím, přihlašujete prosím někdo uživatele po registraci?

Mám:

  • Authenticator
  • Model User

Model User mi zpracuje registraci uživatele, požádá si Authenticator o výpočet hashe hesla a uloží data do databáze.

Teď jsou tam následující potíže:

  1. Authenticator se při kontrole správnosti údajů ptá modelu User na getUser($username) – kruhová závislost. To vyřeším (snad správně) hasheováním hesla buď v Userovi nebo samostatné třídě.
  2. Uživatele potřebuji automaticky přihlásit a to je ještě větší problém. V modelu User uložím data do DB a pak potřebuju zavolat Authentizátor aby mi vrátil identitu. Jak to ale udělám abych tam neměl právě tu kruhovou závislost?

Poradíte mi prosím někdo jak tenhle problém vyřešit, nebo obejít?

Díky za každou radu.

Editoval lunak83 (16. 2. 2014 18:52)

Jan Mikeš
Člen | 771
+
0
-

Na hashovani si vytvor samostatnou sluzbu, vyresi 1. problem.

Prihlasovani uzivatele rozhodne neprovadej ve tride, kde pracujes s databazovou tabulkou user, radeji primo po odeslani registracniho formulare v onSuccess[]

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Já bych nechal Authenticator, aby si vyžádal UserRepository, zatímco registrace by se prováděla v UserRegistrator, který si pak klidně může vyžádat User na automatické přihlášení. To může mimochodem výhodné provádět pouze v případě, že uživatel ještě není přihlášen, metoda se dá pak použít i pro registraci někým jiným v administraci atd.

lunak83
Člen | 47
+
0
-

Děkuji za odpovědi, ta poznámka o přihlášeném uživateli mě zatím vůbec nenapadla :-)

Jen bych poprosil Vojtěcha jestli by mi ještě upřesnil: „který si pak klidně může vyžádat User na automatické přihlášení“ – tzn, že to samotné automatické přihlášení a získání Identity, bys řešil kde?

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

V tom UserRegistrator. Pro sestavení Identity si může stejně jako Authenticator vyžádat UserRepository. K žádné kruhové závislosti by myslím nemělo docházet.

lunak83
Člen | 47
+
0
-

Tak to asi udělám + generování hashe dám zvlášť. Děkuji