Více autorizátorů (authorizators)?

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

Příklad je následující: mám rozdělenou aplikaci na moduly Admin a Front.

Pro každý modul mám jiný způsob přihlašování, mám tedy AdminAuthenticator a FrontAuthenticator, které použiji nějak takto:

config.neon

services:
	adminAuthenticator:
		class: App\AdminModule\Security\AdminAuthenticator
		autowired: no
	frontAuthenticator:
		class: App\FrontModule\Security\FrontAuthenticator
		autowired: no

SecuredPresenter.php (v admin modulu)

public function checkRequirements($element){
	$this->getUser()->getStorage()->setNamespace('admin');
	$authenticator = new AdminAuthenticator($this->usersModel, $this->translator);
	$this->getUser()->setAuthenticator($authenticator);
	parent::checkRequirements($element);
}

Dotaz zní, jakým způsobem mám udělat ACL (statické).
Mám vytvořit dvoje ACL, každé pro jeden modul?
Lze takové dvoje ACL nějak nastavit rovnou v config.neon nebo budu muset použít $this->getUser()->setAuthorizator($authorizator);?

Předem díky za názory.

enumag
Člen | 2118
+
+1
-

Na oddělenou autentizaci i autorizaci mám vlastní knihovnu, kterou jsem stejně chtěl brzy dát na GitHub. Jestli chceš, hodím ji tam hned a můžeme ji společně dotáhnout.

flamengo
Člen | 131
+
0
-

Já to nakonec hodně zjednodušil a vytvořil autorizátor pouze pro modul Admin, kde to potřebuji. V modulu Front si zatím vystačím s kontrolou přihlášen/nepřihlášen, což provádím jednoduše v presenteru metodou $this->getUser()->isLoggedIn(). Zabývat se tím budu, až bude opravdu potřeba :)

Nicméně odpověď na můj dotaz by mne i tak zajímala.

A ta knihovna by mě vlastně taky zajímala :)

Dotáhnout společně? Hehe, děkuji za projevenou důvěru, ale jsme v Nette a vůbec OOP začátečník a hodně principů je pro mne hotová magie. Takže zde bohužel nemůžu sloužit ;)

Editoval flamengo (21. 6. 2016 15:35)

Barvoj
Člen | 60
+
0
-

enumag napsal(a):

Na oddělenou autentizaci i autorizaci mám vlastní knihovnu, kterou jsem stejně chtěl brzy dát na GitHub. Jestli chceš, hodím ji tam hned a můžeme ji společně dotáhnout.

Zajímalo by mě, s čím bys potřeboval pomoct? :)

enumag
Člen | 2118
+
+3
-

Ta knihovna je hotová, používám jí už víc než rok, potřebuju jen názor jestli je api ok, případné nápady na vylepšení a dopsat dokumentaci. Je to silně inspirované Nette\Security a i to používá některé části jako Permission nebo UserStorage. V podstatě potřebuju spíše feedback než abyste na tom pracovali.

Hodil jsem to na GH: https://github.com/…hne/Security

Hlavní features oproti Nette/Security:

  • identita v autorizátoru (viz mé staré RFC)
  • možnost oddělených namespaců (samostatní uživatelé pro frontend a pro backend)
  • možnost řešení problému že uživateli se nezruší session pokud se změní oprávnění (viz staré vlákno) – v nette totiž uživatel zůstane přihlášen i poté co mu admin účet smaže (a není to považováno za bug)

Editoval enumag (21. 6. 2016 17:02)

Barvoj
Člen | 60
+
0
-

Super:) Určitě se na to podívám. A pak ti někam (sem?) hodím zpětnou vazbu:)

enumag
Člen | 2118
+
0
-

Ještě jsem do předchozího příspěvku přidal hlavní features…

@Barvoj Feedback asi raději na github nebo mejlem, tady jsme trochu off-topic.

@flamengo Nějaké rozumné řešení v rámci Nette\Security ti bohužel neporadím. Tu knihovnu jsem psal v podstatě právě proto že jsem kloudné řešení nevymyslel.

Editoval enumag (21. 6. 2016 17:03)