Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Zend_auth Wyświetlanie danych dla poszczególnego użytkownika.
cykcykacz
post 4.03.2012, 18:16:46
Post #1





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

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


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


Ten post edytował cykcykacz 4.03.2012, 18:30:14
Go to the top of the page
+Quote Post
CuteOne
post 5.03.2012, 02:13:00
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


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

Ten post edytował CuteOne 5.03.2012, 02:16:07
Go to the top of the page
+Quote Post
cykcykacz
post 5.03.2012, 18:58:07
Post #3





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

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


Jasne że się nie sprawdzi a więc jak wy to robicie?
Go to the top of the page
+Quote Post
CuteOne
post 5.03.2012, 21:41:12
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


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
Go to the top of the page
+Quote Post
cykcykacz
post 6.03.2012, 19:19:31
Post #5





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

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


Dzięki postaram się to wdrożyć.
Go to the top of the page
+Quote Post
irmidjusz
post 6.03.2012, 22:13:33
Post #6





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

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


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.


--------------------
there is much to be learned
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: 24.07.2025 - 13:56