Здравствуйте. Много читал про разграничение прав. Многие решения неэффективны, многие не понятны.
Реализовал свое, под проект. Суть такая: есть таблица role, где перечислены роли:
1. админ
2.Клиент
3.Менеджер
4. Мастер и т.д.
Есть таблица right, где права:
1. доступ в админпанель
2.добавление заявок
3. редактирование заявок
4.добавление пользователей
Ну и третья access для связки этих двух таблиц.
В нужном месте пишу:
<?$right='4'; include('access.php');if(isset($access['id'])){
echo "доступно только если у пользователя с ролью админ есть право 4"; }?>
Проверка прав доступа в файле access.php:
<?php
//проверка прав доступа
$dostup = mysqli_query($db, "SELECT id FROM access WHERE id_right = $right AND id_role = $user[role] ");
$access = mysqli_fetch_assoc($dostup);
Не знаю на сколько это элегантное решение, но прекрасно работает. Я создаю роль, наделяю ее правами и вуаля.
Но столкнулся с проблемкой, к которой не могу найти простого решения.
Задача такая:
На страничке, где раздаются права есть checkbox's
когда я выбираю права админа или менеджера checkbox's должны заполнится. Следовательно, при изменении галочек, они должны записываться в БД.
Теперь, то что я делаю. Когда я выбираю редактировать роль, открывается модальное окошко с запросом и чекбоксами:
$access1 = mysqli_query($db,"SELECT id_right FROM access WHERE id_role = '$_GET[id]'");
if($ass = mysqli_fetch_array($access1)){
do{
print_r($ass['id_right']);
//Скрипт выдает 1,2,3 или 4 и т.д. В зависимости от выбора $_GET[id]
}while($ass = mysqli_fetch_array($access1));
}
и чекбоксы ниже:
<div class="checkbox"><label><input type="checkbox" name="dostup-3" value="on" /> Доступ в административную панель</label></div>
<div class="checkbox"><label><input type="checkbox" name="dostup-1" value="on" /> Добавление и редактирование заявок</label></div>
<div class="checkbox"><label><input type="checkbox" name="dostup-2" value="on" /> Удаление заявок</label></div>
<div class="checkbox"><label><input type="checkbox" name="dostup-4" value="on" /> Быстрое обслуживание</label></div>
<div class="checkbox"><label><input type="checkbox" name="dostup-5" value="on" /> Управление ролямя</label></div>
Вопрос: Как мне заполнить чекбоксы из запроса выше? Спасибо.