|
|
|
| Есть таблица ЮЗЕРОВ, и таблица НОВОСТЕЙ разбитых по категориям.
При добавлении из формы ЮЗЕРА, выбирать доступ(редакт, удаление..) к определенным категориям.
После аутентификации ЮЗЕРА, выводятся все новости, а просматривать и редакт. может только те, на которые имеет доступ.
Подтолкните как реализовать ЛОГИКУ?, средствами PHP MySQL? | |
|
|
|
|
|
|
|
для: ШИМ
(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. Конечно, это все тривиально показано, на практике посложнее будет. Советую почитать литературу, т.к. есть много ньюансов. | |
|
|
|
|
|
|
|
для: 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, то и соответствующие ссылки.
ТАКОЙ ПОДХОД В ПОРЯДКЕ? | |
|
|
|
|
|
|
|
для: ШИМ
(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 -- когда убрать.
) | |
|
|
|
|
|
|
|
для: ШИМ
(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;
|
Вот и все.
А ваше решение мало того что подразумевает создание нового объекта бд, так еще вы для каждого пользователя вынуждены будете определять действия над всеми каталогами.
А так конечно можно. | |
|
|
|
|
|
|
|
для: oradev
(26.07.2007 в 16:08)
| | Вы все правильно говорите, ... только не учитываете местный колорит.
А он такой, что на хостингах вообще не выдают эккаунты пользователей БД без счета, и крайне редко выдают больше двух -трех.
Приходится справляться средствами уровня приложения. | |
|
|
|