Pernahkah Anda mempertimbangkan untuk menyimpan izin Anda sebagai bilangan bulat, dengan setiap izin nilai biner (yaitu, 1, 2,4,8,16), dan Anda menambahkan semua izin mereka. Anda kemudian dapat memeriksa apakah mereka memiliki izin yang diberikan menggunakan &operator
Seperti ini:
if ($accessLevel & $userPermissions)
Itu memberi Anda sistem yang jauh lebih bermanfaat daripada menyimpan angka biner
Seperti yang diminta dalam komentar, sedikit lebih banyak informasi.
Anda akan mengatur tabel pengguna Anda untuk memiliki bidang bilangan bulat untuk menyimpan izin Anda. Setiap tingkat izin Anda akan memiliki kelipatan biner (tidak tahu istilah yang benar di sini) yang sesuai dengan nilai bit biner. Misalnya:
Read - 1
Edit - 2
Create - 4
Delete - 8
Dan seterusnya, sebanyak yang dibutuhkan. Untuk membuat tingkat izin pengguna, Anda ATAU nilainya bersama-sama. Mari kita asumsikan level di atas disimpan di kelas sebagai nilai statis, Anda akan membuatnya seperti ini:
$newUser->Permissions = Permissions::Read | Permissions::Create;
Yang memberi Anda pengguna yang dapat membaca dan membuat, tetapi tidak mengedit atau menghapus.
Untuk memeriksa apakah pengguna memiliki izin untuk melakukan suatu tindakan, Anda menggunakan DAN:
if ($newUser->Permissions & Permissions::Read) {
echo 'You can do this!';
} else {
echo 'You can't this!';
}
Ini memberi Anda satu bidang basis data sederhana, yang dapat diperluas seperti yang Anda butuhkan secara realistis, dan pemeriksaan dan perubahan yang mudah digunakan. Anda mungkin juga ingin mempertimbangkan untuk menyimpan tingkat izin di tabel lain, dll, tergantung pada tingkat penyesuaian yang mungkin Anda perlukan.