Czy rozważałeś przechowywanie swoich uprawnień jako liczby całkowitej, przy czym każde uprawnienie ma wartość binarną (tj. 1,2,4,8,16) i dodajesz wszystkie ich uprawnienia. Następnie możesz sprawdzić, czy mają dane uprawnienia, używając operatora &
Tak:
if ($accessLevel & $userPermissions)
To daje znacznie bardziej użyteczny system niż przechowywanie liczby binarnej
Zgodnie z prośbą w komentarzach, trochę więcej informacji.
Możesz skonfigurować tabelę użytkowników, aby zawierała pole liczb całkowitych do przechowywania twoich uprawnień. Każdy z twoich poziomów uprawnień miałby binarną wielokrotność (nie znam tutaj poprawnego terminu), która odpowiada wartości binarnego bitu. Na przykład:
Read - 1
Edit - 2
Create - 4
Delete - 8
I tak dalej, ile potrzeba. Aby utworzyć poziom uprawnień użytkowników, LUB wartości razem. Załóżmy, że powyższe poziomy są przechowywane w klasie jako wartości statyczne, utworzysz to w ten sposób:
$newUser->Permissions = Permissions::Read | Permissions::Create;
Co daje Ci użytkownika, który może czytać i tworzyć, ale nie może edytować ani usuwać.
Aby sprawdzić, czy użytkownik ma uprawnienia do wykonania czynności, użyj AND:
if ($newUser->Permissions & Permissions::Read) {
echo 'You can do this!';
} else {
echo 'You can't this!';
}
Daje to jedno proste pole bazy danych, które jest tak rozszerzalne, jak naprawdę potrzebujesz, oraz proste w użyciu kontrole i zmiany. Możesz również rozważyć przechowywanie poziomów uprawnień w innej tabeli itp., w zależności od tego, jakiego poziomu dostosowania możesz potrzebować.