Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rozwiązanie problemu z dostępem
mma
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.11.2007

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


Witam!
Od pewnego czasu poznaje mvc i natrafiłem na ciekawy tutorial na http://www.phpit.net/article/simple-mvc-php5/ .
Bardzo mi podeszło to co tam jest przedstawione - myśle, że na początek jest idealne. I, że będe to mugł (mvc) wykorzystywać jako podstawe w kolejnych aplikacjach PHP.

Ale do rzeczy, przechodząc przez ten tutorial - przerabiając cześciowo itp. , zastanawia mnie jeden fakt...
Jak zrobić dosęp do panelu administracyjnego , chciałbym to zrobić w ruterze no i właśnie, nie za bardzo wiem który z pomysłów wybrać.
Mam dwa pomysły na dzień dzisiejszy - jeden to sytuacja w którym sprawdzany jet czy podkatalog w sciezce jest katalogiem administracyjnym
np:
  1. <?php
  2. //$parts - cześci ścieżki np admin/index, admin =>[0] index=>[1]
  3. if ($parts[0] == ADMIN_FOLDER) {
  4. if (!($this->_registry->auth->isLoggedIn() && $this->_registry->user->isAdmin()))
  5. $this->redirect('index');
  6. }
  7. ?>

Powyższa sytuacja zdaje się być dobra gdy użytkownika zaogowany to admin i nikt więcej.

Drugie rozwiązanie to system praw zapisywanych/odczytywanych z bazy danych (zserializowana tabela).

W ruterze wykonywana by była funkcja mapująca (ja to tak widze) - sprawdzająca otrzymaje prawa z powiązaniami prawo - kontroler.

Jeśli ktoś się zastanawia o co mi chodzi, to chodzi o to czy ma ktoś jakies inne pomysły na rozwiązanie tego zadania, które można by tak w około >80% używać w przyszłości.
Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
splatch
post
Post #2





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


Jeśli idzie o sprawdzanie uprawnień na takim stopniu można rozszerzyć interfejs o metodę isAuthorized, która odczyta rekord i zweryfikuje czy dana osoba ma uprawnienia do danego rekordu. Jest to poniekąd już fragment logiki aplikacji. Zazwyczaj w takim przypadku tworzyłem oddzielną akcję:
  1. <?php
  2. interface SecureAction extends Action {
  3. public function getCredentials();
  4. public function isAuthorized();
  5. }
  6.  
  7. class EditPost implements SecureAction {
  8.  
  9. public function isAuthorized(RequestDataHolder $hd) {
  10. $user = $this->getContext()->getUser();
  11.  
  12. // sprawdzenie czy użytkownik ma uprawnienie administracyjne
  13. if ($user->hasCredential('Admin.Post')) {
  14. return true;
  15. }
  16.  
  17. // co ktoś chce chce odczytać?
  18. $post = $hd->getParameter('post_id');
  19. if ($obj = PostPeer::retrieveByPK($post)) {
  20. // porównanie ID autora rekordu z zapisanym w sesji
  21. return $obj->getAuthor()->getId() == $user->getAttribute('user_id');
  22. }
  23. return false;
  24. }
  25. }
  26.  
  27. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 02:26