Problém s rozběhnutím tutoriálu statické ACL

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

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?

besanek
Člen | 128
+
0
-

Máš to špatně odsazené. Chybí ti ještě jeden tab u těch podpoložek setupu.

Editoval besanek (2. 2. 2014 15:36)

jtd
Člen | 12
+
0
-

díky, asi bude chvíli trvat než si na to navyknu, a začnu dávat pozor

jtd
Člen | 12
+
0
-

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
+
0
-

V přiložených zdrojových kódech máš:

  1. Špatné odsazení u podpoložek setupu
  2. AddResources místo AddResource
  3. Login form se nevykresluje, protože ho tam vůbec nemáš
jtd
Člen | 12
+
0
-

hups, jsem nahrál původní zipku, opraveno

Nobody.guy
Člen | 19
+
0
-
  1. Nepoužíváš namespace Nette\Application\UI\Form v AuthPresenter, takže ti formulář nemůže fungovat
  2. 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
+
0
-

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
+
0
-

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ě.

jtd
Člen | 12
+
0
-

ajo, já zapomněl že to tam je víckrát (namespace znám, ale ráno mi to nemyslí)

zkoušel jsi to rozběhnout? … db tam zatím není potřeba, protože asi bude vážně nějaká bota v tom návrhu protože ten form stále nemám

Nobody.guy
Člen | 19
+
0
-

JJ zkoušel.

  1. Logiku z @layout bych dal do bloku content do default.latte
  2. do @layout přidat {include content}
  3. form v login.latte obalit blokem content
  4. zbavit se redirectu v BasePresenteru

Nebo mrkni sem – https://github.com/…le/templates :)

Editoval Nobody.guy (3. 2. 2014 20:10)