Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Zend_Framework] autoryzacja dla wybranych rekordów tabeli
konys
post
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 7
Dołączył: 5.11.2005

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


Witam

Stawiam pierwsze kroki z zaawansowanymi systemami autoryzacji użytkownika. Natknąłem się na podstawowy problem, którego jakoś nie mogę rozwiązać:

Mam tabelę 'dane':

id
owner_id
jakies_dane

i chcę by użytkownik z grupy 'user' mógł przeprowadzać operacje jedynie na swoich rekordach (wg. owner_id).

Czy da się to zrobić używając Zend_Acl? Jeśli tak, to w jaki sposób (czy dołoby radę skonstruować zasób (Zend_Acl_Resource) reprezentujący wszystkie rekordy wybranego użytkownika)?

Ponieważ mój projekt bazuje na Zend Framework najchętniej wykorzystałbym autoryzację w nim zaimplementowaną, jestem jednak otwarty na inne propozycje.

Ten post edytował konys 21.01.2007, 03:40:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
andrzejb
post
Post #2





Grupa: Zarejestrowani
Postów: 93
Pomógł: 1
Dołączył: 12.08.2005

Ostrzeżenie: (10%)
X----


o fajny temat tak jest taka mozliwosc ACL, ACO czyli twoj rekord(jest obiektem kontorli dostepu) i lapiesz kto o niego sie ubiega. Jedyny problem jest w masie informacji ktora bedzie musiala zostac zapisana do kazdego rekordu na temat praw i tu pojawia sie problem jako ze natykasz sie na przerost formy nad trescia mi natomiast wystarczylo takie rozwiazanie

  1. <?php
  2. //simpleAcces Control lib v1.2 by andriu 26.01.2006
  3. //na wejsciu obiekt to tabela z elementami czyli wierszami,
  4. // client to id uzytkownika probojacego uzyskac dostep do obiektu :)
  5. // zmienna sStatus zapamietuje prawa uzytkownika 
  6. // ^export to: /controllers/components/othauth.php 1.10.2006
  7. function acces($obiect,$element,$client=0){
  8. //sprawdzamy czy istenieje id uzytkownika
  9. if(is_numeric($client) && $client > 0){
  10. $sql=mysql_query("SELECT id, user_id FROM ".$obiect.
  11. WHERE id='".$element."' LIMIT 1");
  12. //sprawdzamy czy istenieje obiekt
  13. if(@mysql_num_rows($sql)>0){
  14. $row=mysql_fetch_array($sql);
  15. //sprawdzamy czy wlascicielem jest uzytkownik
  16. if ($row['user_id']==$client){
  17. return 1;
  18. }else{
  19. //sprawdzamy prawa uzytkownika 
  20. if($this->sStatus!='check'){
  21. if($this->sStatus>3){
  22. return 1;
  23. }else{
  24. return 0;
  25. }
  26. }else{
  27.  $sql_user=mysql_query("SELECT id, Status FROM milf_user 
  28. WHERE id='".$client."' LIMIT 1");
  29. $usr=@mysql_fetch_array($sql_user);
  30. if($usr['Status']>2){
  31. //zapisujemy prawa w zmiennej klasy
  32. $this->sStatus=$usr['Status'];
  33.  return 1;
  34. }else{
  35. return 0;
  36. } 
  37. }
  38.  
  39.  
  40. }
  41. }else{
  42. $this->error.="Cant found element in obiect";
  43. return 0;
  44. }
  45.  
  46. }else{
  47. return 0;
  48. }
  49. }
  50. ?>


to stary kod ale powinien cos zobrazowac
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: 8.10.2025 - 13:32