Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Реализация прав доступа
 
 автор: ШИМ   (25.07.2007 в 22:15)   письмо автору
 
 

Есть таблица ЮЗЕРОВ, и таблица НОВОСТЕЙ разбитых по категориям.
При добавлении из формы ЮЗЕРА, выбирать доступ(редакт, удаление..) к определенным категориям.
После аутентификации ЮЗЕРА, выводятся все новости, а просматривать и редакт. может только те, на которые имеет доступ.

Подтолкните как реализовать ЛОГИКУ?, средствами PHP MySQL?

   
 
 автор: oradev   (26.07.2007 в 13:05)   письмо автору
 
   для: ШИМ   (25.07.2007 в 22:15)
 


create user bob identidied by pass1;
create user john identified by pass2;

grant all on news to bob;
grant select on news to john;


В результате имеем пользователей, обладающих разными уровнями привилегий к таблице news. Конечно, это все тривиально показано, на практике посложнее будет. Советую почитать литературу, т.к. есть много ньюансов.

   
 
 автор: ШИМ   (26.07.2007 в 15:43)   письмо автору
 
   для: oradev   (26.07.2007 в 13:05)
 

я думал сделать таблу ЮЗЕР, и привилегий например GRANT,


GRANT
id | id_user | id_catalog | edit | delete | 

Т.Е. юзеру в таблицу грант, пишутся id категорий которые может просматривать, и возможность редактирования или удаления.

GRANT
id | id_user | id_catalog | edit | delete | 
1        1                 2               yes     no
2         1                3                no     yes

при аутентификации проверять, какие категории можновыводить, и если стоят yes в edit/delete, то и соответствующие ссылки.

ТАКОЙ ПОДХОД В ПОРЯДКЕ?

   
 
 автор: Trianon   (26.07.2007 в 15:53)   письмо автору
 
   для: ШИМ   (26.07.2007 в 15:43)
 

я бы сделал
CREATE TABLE GRANT_TABLE
(
id INT(11) NOT NULL DEFAULT AUTO_INCREMENT PRIMARY KEY,
id_user INT(11) NOT NULL , -- чужой ключ к usertable
id_table INT(11) NOT NULL , -- чужой ключ к таблице доступных ресурсов (у Вас - catalog)}
action enum('show', 'edit', 'delete',... ) NOT NULL DEFAULT 'show', -- хотя я бы оформил чужим ключом
id_created_by ... -- кем выдано - как id_user
created DATETIME -- когда выдано
expired DATETIME -- когда убрать.
)

   
 
 автор: oradev   (26.07.2007 в 16:08)   письмо автору
 
   для: ШИМ   (26.07.2007 в 15:43)
 

Ну да, а если этих юзеров будет около 100 и каталогов столько же, придется повозиться.
В привиденном мною коде, это займет минимум несколько действий
1) выбор пользователя
2) назначение ему соответствующих грантов на табличку с каталогами. Это либо:


grant select on table to user;
или
grant delete on table to user;
или
grant update on table to user;
или
grant all to user;


Вот и все.


А ваше решение мало того что подразумевает создание нового объекта бд, так еще вы для каждого пользователя вынуждены будете определять действия над всеми каталогами.

А так конечно можно.

   
 
 автор: Trianon   (26.07.2007 в 16:10)   письмо автору
 
   для: oradev   (26.07.2007 в 16:08)
 

Вы все правильно говорите, ... только не учитываете местный колорит.

А он такой, что на хостингах вообще не выдают эккаунты пользователей БД без счета, и крайне редко выдают больше двух -трех.
Приходится справляться средствами уровня приложения.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования