Ako správne na statické ACL
- Pavel Janda
- Člen | 977
@iGavrilo Tak to jsi nehledal pořádně.
Třeba:
https://play.nette.org/…i-acl-vrstvy
Nebo myslíš, že i toto stojí za nic? To bych nerad..
Editoval Pavel Janda (2. 3. 2016 13:44)
- David Matějka
- Moderator | 6445
@PavelJanda tohle je zneuzivani dedicnosti
nejlepsi je napsat si factory https://forum.nette.org/…zace-pouziti#…
v dokumentaci to bohuzel zatim neni, ale je pripraven pull request. jestli se v tom nezformatovanym vyznas, tak ti to taky pomuze :) https://github.com/…ll/388/files
- iGavrilo
- Člen | 32
@PavelJanda Od kedy si to editoval hodilo mi to error Type of service ‚factory‘ is unknown.
Môj config
services:
- App\Model\SlidersManager
- App\Model\ServersManager
- App\Model\NewsManager
- App\Model\ForumManager
- App\Security\AuthorizatorFactory
class: Nette\Security\Permission
create: @App\Security\AuthorizatorFactory::create
router: App\RouterFactory::createRouter # Nastavení routeru aplikace.
authenticator: App\Model\UserManager # Nastavení přihlašování do aplikace.
- David Matějka
- Moderator | 6445
mas to tam spatne odsazene a chybi ti tam odrazka.
services:
- App\Model\SlidersManager
- App\Model\ServersManager
- App\Model\NewsManager
- App\Model\ForumManager
- App\Security\AuthorizatorFactory
-
class: Nette\Security\Permission
create: @App\Security\AuthorizatorFactory::create
router: App\RouterFactory::createRouter # Nastavení routeru aplikace.
authenticator: App\Model\UserManager # Nastavení přihlašování do aplikace.
to class a factory jsou option jedne anonymni sluzby
- Radek Pašta
- Člen | 8
Zdravím,
musím pochválit tutoriál Nasazení ACL
vrstvy od @PavelJanda
Při osahání tutoriálu jsem narazil na pár drobností, které by chtělo upravit pro ostatní. Doufám, že to nebylo mou nepozorností. Tak mě snad autor neukamenuje…
Třída AuthorizatorFactory
// Kořenový zdroj "Profile" neexistuje
$acl->addResource('User:Profile', 'Profile'); -->> $acl->addResource('User:Profile', 'User');
Třída SignPresenter
// Třídu Acl jsme nevytvářeli
use App\Security\Acl; -->> use App\Security\AuthorizatorFactory;
// a následně úprava zpracování formuláře
$identity = new Nette\Security\Identity(1, Acl::ROLE_USER, $data); --> $identity = new Nette\Security\Identity(1, AuthorizatorFactory::ROLE_USER, $data);
Nakonec někam zmínku, na vytvoření šablony
app/presenters/templates/Profile/default. Když není, vyskočí
Tracy.
Snad vše na co jsem v tutoriálu narazil
- Pavel Janda
- Člen | 977
@RadekPašta Děkuji za doplnění. Jak občas něco upravím, tak to neprocházím… chyba. Napravím.
- emmil
- Člen | 26
@PavelJanda Nemohl jsem si odpoustit velkou pochvalu za skvělý tutoriál! Dneska jsem něco podobného asi 3 hodiny hledal a nemohl jsem najít (na googlu). Pak příjdu na forum a chystám se vytvořit nový topic (ale pro jistotu ještě letmě profrčím topicy) a hned třetí topic a má v sobě tak luxusní tutoriál. Proč na tenhle tutoriál není odkaz v dokumentaci access-control ? Myslím, že by to hodně věcí objasnilo. Dokumentace je sice moc hezky napsaná ale když chce člověk vidět kde má všechny ty snippety rozházet po aplikaci, tak tenhle tutoriál to krásně ukáže.
EDIT:
Jedna věc mi ale nejde do hlavy, proč nemohu v configu udělat něco takového:
authorizator: App\Model\Security\AuthorizatorFactory::create()
a v továrně methodu create udělat jako statickou?
Editoval emmil (22. 4. 2016 11:21)
- Pavel Janda
- Člen | 977
@emmil Dík za pochvalu.
Tak určitě to jde. Ale při použití statiky by ti například DIC nepředal případné závislosti v konstruktoru (databáze, …) a podobně.
- emmil
- Člen | 26
@PavelJanda Díky za odpověď. Abych pravdu řekl, tak z dokumentace bych asi nepochopil, že by se to mělo v configu napsat zrovna tak, jak nastiňuješ v tutoriálu (a že kdybych to takhle nenapsal a použil statickou metodu, tak bych narazil na problémy, které zmiňuješ). Pro referenci jenom uvádím kód, o kterém se bavíme.
services:
...
- App\Security\AuthorizatorFactory
-
class: Nette\Security\Permission
create: @App\Security\AuthorizatorFactory::create