Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dostęp do aplikacji oparty o role
inomi13
post 16.06.2023, 11:42:27
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

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


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. }


Ten post edytował inomi13 16.06.2023, 11:51:41
Go to the top of the page
+Quote Post
gitbejbe
post 16.06.2023, 22:14:00
Post #2





Grupa: Zarejestrowani
Postów: 515
Pomógł: 63
Dołączył: 27.08.2012

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


Cytat
Proszę o feedback czy moje rozwiązanie ma sens


wszystko ma jakiś sens, ale w tym przypadku ciężko go znaleźć
Go to the top of the page
+Quote Post
Salvation
post 17.06.2023, 13:44:10
Post #3





Grupa: Zarejestrowani
Postów: 344
Pomógł: 70
Dołączył: 15.07.2014

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


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".
Go to the top of the page
+Quote Post
Tomplus
post 17.06.2023, 19:24:21
Post #4





Grupa: Zarejestrowani
Postów: 1 838
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

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


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.



Go to the top of the page
+Quote Post
inomi13
post 19.06.2023, 09:55:44
Post #5





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

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


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ć.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 27.04.2024 - 17:29