Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Rozróżnianie użytkowników
Forum PHP.pl > Forum > PHP > Frameworki
juzwa
chodzi mi o sytuacje taką, że mam np 5 typów użytkowników
- zlecacz, instalator, kontroler, użytkownik, zarządca

każdy z tych użytkowników może wykonywać specyficzne akcje, z tym, że część (niewielka bo niewielka) jest wspólna (logowanie, wylogowywanie, edycja swoich danych itp)

chcę, żeby każdy z typów uzytkowników miał dostęp do wyszczególnionych akcji i kontrolerów, i nic poza tym
np zlecacz ma z kontrolera ZLECENIA dostęp do akcji WYSTAW ZLECENIE
np instalator ma dostęp z kontrolera ZLECENIA do akcji SPRAWDŹ ZLECENIE

itp itd

na razie próbuję coś takiego
1)tworzę role
  1. <?php
  2. $acl = new Zend_Acl();
  3. $acl->addRole(new Zend_Acl_Role('admin'))
  4. ->addRole(new Zend_Acl_Role('zlecacz'))
  5. ->addRole(new Zend_Acl_Role('instalator'))..
  6. ?>


2)tworzę zasoby (wydaje mi się, że robię to na zasadzie KONTROLER/AKCJA
  1. <?php
  2. $acl->add(new Zend_Acl_Resource('auth/loginuser'));
  3. $acl->add(new Zend_Acl_Resource('auth/logoutuser'));
  4. ?>


3)przypisuję rolę do zasaobu
  1. <?php
  2. $acl->allow($role,'auth/loginuser');
  3. $acl->allow($role,'auth/logoutuser');
  4. ?>


itd itp

ale nie działa mi to tak jak chcę

jakoś do mnie przykłady nie przemawiają, nie wiem co robię źle - jak takie coś jak ja chce zrobić po zendowskiemu?
nospor
no dobra, stworzyles role, dodales prawa do zasobow, ale czy ty potem gdziekolwiek sprawdzasz, czy ten ktos ma dostep do tego zasobu?Jak wywolujesz akcje w kontrolerze to sprawdzasz czy user ma do niej prawo?
likemandrake
W dokumentacji Zenda nigdzie nie ma przykładów, żeby zasób albo rola miały nazwę postaci "trala/lala". Po za tym tej dokumentacji chyba nie przeczytałeś, ponieważ wyraźnie tam pisze jak potem sprawdzać czy dany user ma dostęp do zasobu czy go nie ma.
kosmowariat
Cytat(likemandrake @ 17.02.2009, 10:57:33 ) *
W dokumentacji Zenda nigdzie nie ma przykładów, żeby zasób albo rola miały nazwę postaci "trala/lala".


a co to ma do rzeczy ? nigdzie w manualu nie jest napisane że nie mogą miec nazwy w takiej postaci. Wg mnie jest to dobra koncepcja dla nazywania zasobów które odzwierciedlają akcję. Co do działania to tak jak przedmówcy powiedzieli musisz sprawdzic sam czy dana akcja jest dozwolona czy nie. Najlepiej w tym celu napisac plugin do front controller'a który będzie to robił z automatu i zapewne załatwi to większośc przypadków użycia. Dodatkowo warto przechowywac obiekt acl jako pole klasy kontrolera akcji lub w rejestrze żeby miec do niego dostęp z action controllera, a później już tylko w razie potrzeby if(!$acl->isAllowed()) : throw new Exception("Won mi stad biggrin.gif"); endif;

pzdr
likemandrake
W moim rozwiązaniu jest tak jak kolega wyżej pisze, jest Plugin i jest Helper. Gdy ktoś nie ma dostępu do danego zasobu, wywołuję odpowiednią metodę Helpera. Metoda w helperze przeprowadza takie akcje, że sprawdza czy użytkownik jest już zalogowany, jeśli nie, wyświetlamy formularzyk logowania, jeśli tak, wywalamy błędzik 403 smile.gif

A co do nazewnictwa zasobów, skoro Zend nie podał przykładów z innymi znakami niż alfabetycznymi, pomyślałem, że tak ma być, bez grzebania w kodzie w poszukiwaniu prawdziwych możliwości. Jeśli natomiast można stosować dowolne znaki, to aż jestem happy, bo wtedy ma się praktycznie nieograniczone pole w ich nazywaniu smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.