Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zend_auth Wyświetlanie danych dla poszczególnego użytkownika.
Forum PHP.pl > Forum > Przedszkole
cykcykacz
Witam,
korzystam z Zend_auth.
Mam role:
-user
-admin

Dodaję artykuły i jak zrobić aby user widział tylko swoje a admnistrator wszystkie?
Wystarczy prosta instrukcja warunkowa:
  1. if($role = 'admin')
  2. fetchALL
  3. else
  4. fetchrowbyID
CuteOne
To żeś palnął jak ślepy o krawężnik.. Taką instrukcje będziesz wpisywał w każdym miejscu aplikacji gdzie admin ma widzieć wszystko a inni tylko trochę? A co gdy dojdzie do tego kolejna instrukcja "Operator ma widzieć to co admin w pliku X ale to co User w pliku Y"?

Zastanów się czy takie rozwiązanie sprawdzi się na dłuższą metę smile.gif
cykcykacz
Jasne że się nie sprawdzi a więc jak wy to robicie?
CuteOne
Najprościej utworzyć do tego celu kolejną warstwę w Modelu, który będzie decydował co zwrócić w zależności od tego co dostanie w setAuth()
  1.  
  2. public function init() {
  3.  
  4. $this->modelX = new Model_X();
  5. $this->modelX -> setAuth(User_Auth:: getRole());
  6. }
  7.  
  8. public function viewAction() {
  9.  
  10. $this->modelX -> fetch();
  11. }
  12.  
  13. public function editAction() {
  14.  
  15. $this->modelX -> update();
  16. }


  1. class Model_X extends Dodatkowa_warstaw_modelu {
  2.  
  3. public function fetch() {
  4.  
  5. // _role to obiekt User_Auth:: getRole()
  6. if($this->_role -> showAll === TRUE) {
  7.  
  8. return $this -> fetchAll();
  9. }
  10. else {
  11.  
  12. return $this -> fetchRow();
  13. }
  14. }
  15. }


Dzięki temu nie zaśmiecasz kontrolera a całą logikę zrzucasz na model. Pewnie istnieją bardziej wyszukane metody jak DI, wywoływanie metod / klas w zależności od roli itp. itd ale ten sposób wydaje się być najprostszy w późniejszej edycji
cykcykacz
Dzięki postaram się to wdrożyć.
irmidjusz
Skoro korzystasz z Zend_Auth, to zamiast bawić się w sprawdzanie ról, lepiej użyć Zend_Acl i sprawdzać uprawnienia.
Pytanie o rolę przypisaną do użytkownika jest dość prymitywne, no ale może do tego akurat co robisz wystarcza, to ok.
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.