Problém s rozběhnutím tutoriálu statické ACL
- jtd
- Člen | 12
Snažil jsem se podle tutoriálu https://doc.nette.org/…thentication zprovoznit ACL, jelikož pracuji s verzí 2.1 dovolil jsem si udělat pár změn
složku „libs“ jsem nahradil existující složkou vendor kde jsem vytvořil adresář AclProj/Security (nevím k čemu tam prázdný bude)
bootstrap jsem použil ze sandboxu abych měl neon v /config/ a pridal jsem i
/router/ se sandboxu
do teď je ještě vše OK
a teď problém:
přidal jsem do neonu
services:
authorizator:
class: Nette\Security\Permission
setup:
- addRole('guest')
- addRole('editor')
- addRole('admin')
- addResource('Admin:Default')
- addResource('Admin:Page')
- allow('editor', 'Admin:Default') # šetky akcie resource Admin:Default
- allow('admin') # šetky resources a ich akcie
a
services:
authenticator: Authenticator
a od té chvíle dostávám chybu
Nette\DI\ServiceCreationException
Service ‚authorizator‘: Unknown or deprecated key ‚0‘, ‚1‘, ‚2‘, ‚3‘, ‚4‘, ‚5‘, ‚6‘ in definition of service.
Co s tím?
- jtd
- Člen | 12
a mám jiný problém, zdá se že se mi nevykresluje login form… na adresu /admin/auth/login ale nevykresli se mi obsah sablony login.latte
arhiv aktualizován http://upload.jdanek.eu/…/projekt.zip
- Nobody.guy
- Člen | 19
V přiložených zdrojových kódech máš:
- Špatné odsazení u podpoložek setupu
- AddResources místo AddResource
- Login form se nevykresluje, protože ho tam vůbec nemáš
- Nobody.guy
- Člen | 19
- Nepoužíváš namespace Nette\Application\UI\Form v AuthPresenter, takže ti formulář nemůže fungovat
- Máš trošku zvláštní logiku v šablonách. Osobně bych to řešil spíš includama jako zde https://github.com/Ginny/NanoCMS
- jtd
- Člen | 12
díky, na nanoCms určitě mrknu, problém je trošku v tom, že jako to sleduju tak se Nette liší verzi co verzi.. takže když najdeš návod na 2.0.8 tak to v 2.1 je zase jinak… ale budu se snažit chytit nějaký zaběhlý koncept
edit:
protected function createComponentLoginForm()
{
$form = new Nette\Application\UI\Form;
$form->addText('name', 'Name:')
->addRule(Form::FILLED, 'Enter login');
$form->addPassword('password', 'Password:')
->addRule(Form::FILLED, 'Enter password');
$form->addSubmit('send', 'Log in');
$form->onSuccess[] = $this->processLoginForm;
return $form;
}
chová se to stejně
Editoval jtd (3. 2. 2014 7:11)
- Nobody.guy
- Člen | 19
Myslel jsem to spíš tak, že si máš dát pod namespace
use Nette\Application\UI\Form;
A pak už ti stačí form vytvářet jen
$form = new Form;
a bude ti fungovat i Form:FILLED… Nebo před ty konstanty doplnit namespace, to je na tobě.
- Nobody.guy
- Člen | 19
JJ zkoušel.
- Logiku z @layout bych dal do bloku content do default.latte
- do @layout přidat {include content}
- form v login.latte obalit blokem content
- zbavit se redirectu v BasePresenteru
Nebo mrkni sem – https://github.com/…le/templates :)
Editoval Nobody.guy (3. 2. 2014 20:10)