Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Zend Framework zend_acl zend_auth
cykcykacz
post 28.11.2009, 20:56:16
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Witam, uczę się Zend Framework z tutoriala, w pewnym momencie napotykam na błąd.

Plik Bootstrap.php
Kod
<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoLoad() {

        $modelLoader = new Zend_Application_Module_AutoLoader(array(
                        'namespace' => '',
                        'basePath' => APPLICATION_PATH ));

        $this->_acl = new Model_LibraryAcl;
        $this->_auth = Zend_Auth::getInstance();

        $fc = Zend_Controller_Front::getInstance();
        $fc->registerPlugin(new Plugin_AccessCheck());

        return $modelLoader;
    }



Plik AccessCheck.php
Kod
<?php
class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract {

     private $_acl = null;
     private $_auth = null;

    public function __construct(Zend_Acl $acl, Zend_Auth $auth) {
        $this->_acl = $acl;
        $this->_acl = $auth;
    }
    public function preDispatch(Zend_Controller_Request_Abstract $request) {
                $resource = $request->getControllerName();
                $action = $request->getActionName();

                $identity = $this->_auth->getSorage()->read();
                $role = $identity->role;

                if(!$this->_acl->isAllowed($role, $resource, $action)){
                                $request->setControllerName('authentication')
                                        ->setActionName('login');
        }
    }
}


Plik LibraryAcl.php
Kod
<?php
class Model_LibraryAcl extends Zend_Acl {
    public function __construct() {
        $this->add(new Zend_Acl_Resource('sala'));
        $this->add(new Zend_Acl_Resource('edit'), 'sala');
        $this->add(new Zend_Acl_Resource('add'), 'sala');

        $this->add(new Zend_Acl_Resource('sale'));
        $this->add(new Zend_Acl_Resource('list'), 'sale');

        $this->addRole(new Zend_Acl_Role('user'));
        $this->addRole(new Zend_Acl_Role('admin'), 'user');

        $this->allow('user', 'sale', 'list');
        $this->allow('admin', 'sala', 'edit');
        $this->allow('admin', 'sala', 'add');
    }
}


Otrzymuję taki komunikat:
Kod
Catchable fatal error: Argument 1 passed to Plugin_AccessCheck::__construct() must be an instance of Zend_Acl, none given, called in C:\xampp\htdocs\sala\application\Bootstrap.php on line 15 and defined in C:\xampp\htdocs\sala\application\plugins\AccessCheck.php on line 7


Proszę o lekarstow:).
Ps: Pewnie wszystko jest ładnie opisane w komunikacie błędu, jednak ja jeszcze tego nie ogarniam.
Go to the top of the page
+Quote Post
darko
post 28.11.2009, 21:29:56
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


bootstrap.php

1. dodaj dwa pola:

  1. private $_acl;

oraz
  1. private $_auth;


2. Zamień
  1. $fc->registerPlugin(new Plugin_AccessCheck());


na

  1. $fc->registerPlugin(new Plugin_AccessCheck($this->_acl, $this->_auth));


3. w konstruktorze Plugin_AccessCheck zamień

  1. $this->_acl = $acl;
  2. $this->_acl = $auth;


na

  1. $this->_acl = $acl;
  2. $this->_auth = $auth;



ps. świetny jest ten tutorial na YouTube smile.gif


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
cykcykacz
post 28.11.2009, 21:59:03
Post #3





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Super wprowadziłem zmiany i działa. Ale się cieszę smile.gif.
Swoją drogą ten tutorial jest bardzo dobry dla takich osób, jak ja które chcą skorzystać z FrameWorka Zend i nie wiedzą jak zacząć. "Aleksander" super przedstawił i wytłumaczył. Naprawdę respekt dla niego!
Go to the top of the page
+Quote Post
darko
post 28.11.2009, 22:20:49
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Popieram, Alex daje radę, polecam też Jego blog, miejscami dokumentacja do ZF jest delikatnie ujmując słaba, a tutoriale Alexa docierają do najbardziej odpornych na wiedzę.

Ten post edytował darko 28.11.2009, 22:21:33


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
cykcykacz
post 28.11.2009, 22:42:40
Post #5





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Kurcze jeszcze mam mały problem otóż po wprowadzeniu poprawnego usera oraz password dostaje taki komunikat:
Kod
Fatal error: Uncaught exception 'Zend_Acl_Role_Registry_Exception' with message 'Role 'users' not found'
Go to the top of the page
+Quote Post
darko
post 28.11.2009, 22:45:42
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


LibraryAcl.php
zamień

$this->addRole(new Zend_Acl_Role('user'));

na

$this->addRole(new Zend_Acl_Role('users'));



--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
cykcykacz
post 28.11.2009, 22:55:39
Post #7





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Kod
Fatal error: Uncaught exception 'Zend_Acl_Role_Registry_Exception' with message 'Parent Role id 'user' does not exist'
Go to the top of the page
+Quote Post
darko
post 28.11.2009, 22:57:47
Post #8





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. $this->addRole(new Zend_Acl_Role('users'));
  2. $this->addRole(new Zend_Acl_Role('admin'), 'users');


Ten post edytował darko 28.11.2009, 22:58:07


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
cykcykacz
post 28.11.2009, 23:01:38
Post #9





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Kod
Fatal error: Uncaught exception 'Zend_Acl_Role_Registry_Exception' with message 'Role 'user' not found' in


sciana.gif

Sam nie wiem czy może prócz tych plików które podałem mogę mieć gdzieś błąd?
Go to the top of the page
+Quote Post
darko
post 28.11.2009, 23:04:28
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


na pewno podmieniłeś w acl konsekwentnie

$this->allow('user', 'sale', 'list');

na

$this->allow('users', 'sale', 'list');

questionmark.gif


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
cykcykacz
post 28.11.2009, 23:14:42
Post #11





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Po podmienieniu na users pokazuje mi się strona z takim komunikatem:

"Firefox wykrył, że serwer przekierowuje żądanie tego zasobu w sposób uniemożliwiający jego ukończenie.


* Problem ten może się pojawić w wyniku zablokowania lub odrzucenia ciasteczek."

Może to pomoże http://www.youtube.com/watch?v=1A3o35oHmfA...E9&index=18 tutaj opisuje bug...

Ten post edytował cykcykacz 28.11.2009, 23:18:11
Go to the top of the page
+Quote Post
darko
post 28.11.2009, 23:19:36
Post #12





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Bo acla masz źle ustawionego:

dodaj
  1. $this->add(new Zend_Acl_Resource("index"));
  2. $this->add(new Zend_Acl_Resource("error"));
  3. $this->add(new Zend_Acl_Resource("authentication"));
  4. $this->add(new Zend_Acl_Resource("login"));
  5. $this->add(new Zend_Acl_Resource("logout"));
  6.  
  7. $this->allow("users", "error");
  8. $this->allow("users","index");
  9. $this->allow("users", "login");
  10. $this->allow("users","logout");
  11. $this->allow("users","authentication");


Ten post edytował darko 28.11.2009, 23:20:44


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
cykcykacz
post 28.11.2009, 23:27:53
Post #13





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Ok zadziałało ale tego nie rozumiem do końca możesz mi wytłumaczyć że tak powiem co z czym się je:)?

Go to the top of the page
+Quote Post
darko
post 28.11.2009, 23:30:47
Post #14





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Odsyłam do dokumen... ekhm Aleksa smile.gif


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 12:47