Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dostęp do aplikacji oparty o role
Forum PHP.pl > Forum > PHP
inomi13
Zrobiłem dostęp warunkowy do aplikacji za pomocą ról opartą o operatory bitowe. Proszę o feedback czy moje rozwiązanie ma sens i co o tym myślicie.

  1. /*
  2. Role Based Access Control to system
  3.  
  4. //permission
  5. 0 0 0 0 0 0 0 1 - Access system
  6. 0 0 0 0 0 0 1 0 - Read
  7. 0 0 0 0 0 1 0 0 - Write
  8. 0 0 0 0 1 0 0 0 - Delete users
  9. 0 0 0 1 0 0 0 0 - Read Logs
  10.  
  11. //person
  12. user = 1;
  13. guest = 1 | 2 | 4;
  14. moderator = 1 | 2 | 4 | 8;
  15. admin = 1 | 2 | 4 | 8 | 16;
  16.  
  17. */
  18.  
  19. function roleBasedAccessControl($person)
  20. {
  21. global $visibity;
  22.  
  23. $permission = 1 | 2 | 4 | 8 | 16;
  24.  
  25. switch($permission & $person){
  26. case 0:
  27. case 1:
  28. echo '<div class="alert role alert-danger" role="alert"><li>Brak uprawnień do tej zawartości. Skontaktuj się z administratorem systemu!</li></div>';
  29. exit();
  30. break;
  31. case 2:
  32. case 3:
  33. echo '<div class="alert role alert-warning" role="alert"><li>Ograniczone uprawnienia tylko do odczytu.</li></div>';
  34. $visibity = 'disabled';
  35. break;
  36. case 7:
  37. echo '<div class="alert role alert-info" role="alert"><li>Ograniczone uprawnienia tylko do odczytu i zapisu.</li></div>';
  38. break;
  39. default:
  40. return true;
  41. }
  42. }
gitbejbe
Cytat
Proszę o feedback czy moje rozwiązanie ma sens


wszystko ma jakiś sens, ale w tym przypadku ciężko go znaleźć
Salvation
Cytat(gitbejbe @ 16.06.2023, 23:14:00 ) *
wszystko ma jakiś sens, ale w tym przypadku ciężko go znaleźć

+1

Zerknij sobie jak to rozwiązało chociażby Symfony i zaimplementuj u siebie podobny mechanizm.
Na pewno będzie bardziej czytelny niż praca na "bitach".
Tomplus
Co jak pojawią się kolejne role? Jedna osoba będzie mogła odczytywać i zapisywać w miejscu A, a inna tylko w B. Albo moderator będzie mógł operować tylko na konkretnej stronie.



inomi13
Cytat(Tomplus @ 17.06.2023, 20:24:21 ) *
Co jak pojawią się kolejne role? Jedna osoba będzie mogła odczytywać i zapisywać w miejscu A, a inna tylko w B. Albo moderator będzie mógł operować tylko na konkretnej stronie.

Dzięki za sugestie, faktycznie masz racje. Dołożyłem do funkcji drugi argument deklarujący dane uprawnienie aby ten problem rozwiązać.
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-2024 Invision Power Services, Inc.