Хорошей идеей является использование второй таблицы параметров. Некоторые форумы используют этот метод.
Каждому из ваших пользователей присваивается UserGroupId
, который обычно является Int, поскольку с ними легче всего работать. Например, UserGroupId
из 1, может быть администратором, 2 может быть учителем (зависит от вашей организации).
Тогда у вас есть таблица с именем Permissions, в эту таблицу вы включаете все параметры в виде столбцов, что-то вроде этого.
UserGroupID --|-- SearchEnabled --|-- CanOrder
1 0 1
2 1 1
Используя простую двоичную систему, 1 включена, 0 отключена, вы можете управлять параметрами для каждой группы пользователей. Это позволяет получить все разрешения с помощью одного запроса, но при этом предлагает очень большую область для настройки.
Вам не обязательно использовать двоичные числа. Например, вы можете использовать значения 1,2,3, где 1 - полное разрешение, 2 - частичное, а 3 - ноль. Это зависит от того, насколько конкретными должны быть ваши правила.
Теперь, прежде чем позволить пользователю выполнить опцию, вы делаете простую проверку прав пользователей (которые вы должны хранить в массиве или классе для быстрого доступа). Для функции, которая включает поиск, вы должны использовать условие, такое как
If ($user['SearchEnabled')
{
$generate->SearchOptions();
}
else
{
$generate->Error('NoSearchPermissions');
}
Использование двоичных чисел имеет очевидное преимущество, если просто проверить, ИСТИНА или ЛОЖЬ. Если вы используете другую систему нумерации, это потребует немного больше работы, проверяя конкретное значение
If ($user['SearchEnabled'] == 2 || $user['SearchEnabled'] == 1)