Я очень заинтересован в написании класса, который поможет мне с разными разрешениями для разных пользователей (например, класс ACL.)
Я искал отличный метод, и битовая операция торчала!
Я нашел хорошую статью Как написать систему разрешений с использованием битовых и побитовых операций в PHP. В статье объясняется, как обрабатывать разрешения с помощью побитовой операции.
Единственное, что я не уверен в том, как это сделать, — это как разрешить пользователю писать комментарии, но не публиковать темы.
так что если права установлены так:
<?php
$perms = array(
'can_post' => 1,
'can_comment' => 2,
'can_edit' => 4,
'can_delete' => 8
);$user_perms = 2;
//CONDITION #1
if ($user_perms & $perms['can_comment']) {
/* He/She has permission to do this */
} else {
/* He/She doesn't have permission */
}//CONDITION #2
if ($user_perms & $perms['can_post']) {
/* He/She has permission to do this */
} else {
/* He/She doesn't have permission */
}
?>
так выше CONDITION #1
показать работу нормально, и комментарии должны быть разрешены, но //CONDITION #2
не должно быть разрешено, потому что у пользователя нет прав на публикацию!
Мой вопрос, как разрешить пользователю только комментировать, но не оставлять сообщения? для публикации у вас будет ‘001’, а для комментирования у вас будет ‘010’.
Как только у вас есть $perms
Определенный массив, вы можете создать свои собственные карты из него:
// can comment and post but not edit or delete:
$poster = $perms['can_post'] | $perms['can_comment'];
// can edit and delete, but not comment or post:
$janitor = $perms['can_delete'] | $perms['can_edit'];
Вы можете комбинировать любое количество разрешений с |
оператор для построения значений разрешений.
Других решений пока нет …