Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: организация таблиц

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
jonston
Отправлено: 11 Июня, 2013 - 19:17:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




Здравствуйте!Столкнулся с проблемой.Есть пользователи.У них есть привилегии.Я так понимаю нужно создать таблицу users_privileges.Далее у некоторых привилегий есть исключения.Опишу детальнее.Например Есть привилегия просматривать фид событий на сайте.Если эта опция == 0, то фид не выводится.Если == 1, выводится.Фид выводится примерно в таком формате:
Пользователь Сергей добавил фото к объекту Новостройка на Мосфильмовской.
Пользователь Игорь прокомментировал объект Воркаут площадка
Нужно например реализовать так, что фид пользователя 'Игорь' защищен от просмотра.
Это еще не все.Также нужно сделать что бы и фид объектов был защищен от просмотра.
И таких вариантов может быть очень много.Например есть привилегия назначать пользователей на должности, но некоторые должности или пользователи защищены от этой привилегии.Как можно организовать структуру таблиц в этом случае?
Думал сделать так:
Сделать таблицу users_privileges и в ней поле aditional_data сериализованный массив, куда записывается дополнительные условия

Но как понимаю это плохая практика.
У кого какие мысли на этот счет?Спасибо!


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 11 Июня, 2013 - 19:35:22
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Мысли стандартные. Есть несколько разных вариантов реализации ACL. Списки доступа, роли и т.п. В Zend ACL реализованы списки доступа к ресурсам.
На примере ролей: есть сущность "действие", есть сущность "роль", есть сущность "пользователь". Пользователи обладают набором ролей, каждая из ролей имеет набор действий (то есть тех действий, которые разрешаются данной ролью). Пользователь может выполнять действие тогда и только тогда, когда оно присутствует в списке действий хотя бы одной из назначенной ему ролей.
С точки зрения БД получается 5 таблиц: permissions (действия), roles (роли), users (пользователи), roles_permissions (список действий для ролей, таблица-связка), users_roles (список ролей для пользователей, таблица-связка).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 11 Июня, 2013 - 19:43:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




EuGen пишет:
Мысли стандартные. Есть несколько разных вариантов реализации ACL. Списки доступа, роли и т.п. В <a href='http://framework[dot]zend[dot]com/manual[dot][dot][dot]ml'>Zend ACL</a> реализованы списки доступа к ресурсам.
На примере ролей: есть сущность "действие", есть сущность "роль", есть сущность "пользователь". Пользователи обладают набором ролей, каждая из ролей имеет набор действий (то есть тех действий, которые разрешаются данной ролью). Пользователь может выполнять действие тогда и только тогда, когда оно присутствует в списке действий хотя бы одной из назначенной ему ролей.
С точки зрения БД получается 5 таблиц: permissions (действия), roles (роли), users (пользователи), roles_permissions (список действий для ролей, таблица-связка), users_roles (список ролей для пользователей, таблица-связка).


Спасибо!Сейчас посмотрю инфу по этой теме.
(Добавление)
EuGen пишет:
С точки зрения БД получается 5 таблиц: permissions (действия), roles (роли), users (пользователи), roles_permissions (список действий для ролей, таблица-связка), users_roles (список ролей для пользователей, таблица-связка).


Например есть роль manager и роль director у manager есть привилегия редактирования аккаунта.Как ограничить director от редактирования его аккаунта?


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 11 Июня, 2013 - 19:59:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




jonston пишет:
Например есть роль manager и роль director у manager есть привилегия редактирования аккаунта.Как ограничить director от редактирования его аккаунта?

Ввести разные действия (привилегии). Первое - редактирование своей учётной записи, второе - редактирование всех учётных записей, кроме своей. И соответственно проверять в приложении.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 11 Июня, 2013 - 20:06:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




EuGen пишет:
jonston пишет:
Например есть роль manager и роль director у manager есть привилегия редактирования аккаунта.Как ограничить director от редактирования его аккаунта?

Ввести разные действия (привилегии). Первое - редактирование своей учётной записи, второе - редактирование всех учётных записей, кроме своей. И соответственно проверять в приложении.


А если приложение требует очень глубокой кастомизации.Например старший менеджер назначает менеджеру привилегию редактировать аккаунты, но при этом как дополнительно есть список должностей (ролей) которые может отметить старший менеджер закрывая таким образом доступ к аккаунтам выбранным в списке.Получается на каждую роль нужно создавать привилегию?


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 11 Июня, 2013 - 20:11:53
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нет, зачем же так. Ввести роль "защищённый пользователь". И не давать редактировать профили пользователей, которые обладают этой ролью - никому, кроме тех, кто добавлял пользователя или администратора (это я вариант привожу, как у Вас по бизнес логике - сами решите).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
caballero
Отправлено: 11 Июня, 2013 - 20:16:42
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




такие хитромудрые policy не только сложно реализуемы но и бесполезны. Мало к то из юзеров будет со всем этим возится.
яркий пример права доступа в виндовс - доступ к объектам с иерархией наследованием, правами на различные действия и т.д. Я уже не говорю про доменную организацию.
и кто это использует? максимум какой то админ закроет какую то папку или поставит только чтение.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
jonston
Отправлено: 11 Июня, 2013 - 20:18:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




caballero пишет:
такие хитромудрые policy не только сложно реализуемы но и бесполезны. Мало к то из юзеров будет со всем этим возится.
яркий пример права доступа в виндовс - доступ к объектам с иерархией наследованием, правами на различные действия и т.д. Я уже не говорю про доменную организацию.
и кто это использует? максимум какой то админ закроет какую то папку или поставит только чтение.


Например - это приложение подразумевающее управление персоналом.
А если в ТЗ будет описан такой функционал, что мне говорить заказчику?Что в виндовсе правами никто не пользуется и нам не стоит? Радость

(Отредактировано автором: 11 Июня, 2013 - 20:20:35)



-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
caballero
Отправлено: 11 Июня, 2013 - 20:33:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
А если в ТЗ будет описан такой функционал, что мне говорить заказчику

так пусть он сначалу будет описан - тогда можно выставить соответсвующую сумму за такое ТЗ. Пока что вы сами придумываете себе проблеммы.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
jonston
Отправлено: 11 Июня, 2013 - 20:46:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




caballero пишет:
Цитата:
А если в ТЗ будет описан такой функционал, что мне говорить заказчику

так пусть он сначалу будет описан - тогда можно выставить соответсвующую сумму за такое ТЗ. Пока что вы сами придумываете себе проблеммы.


Я не согласен.В любом случае это послужит толчком к развитию меня как архитектора бд.


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
caballero
Отправлено: 11 Июня, 2013 - 20:48:52
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Я не согласен

естественно. Но как говорится ничто так не примиряет с реальностью как сама реальность.

Цитата:
В любом случае это послужит толчком к развитию меня как архитектора бд

Не послужит - хотя бы потому что в реализации подобных вещей организация таблиц не самая большая проблемма.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
jonston
Отправлено: 11 Июня, 2013 - 20:56:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




Цитата:
Не послужит - хотя бы потому что в реализации подобных вещей организация таблиц не самая большая проблемма.


Вот поэтому и создал здесь эту тему.Что бы можно было перенять опыт от старших и поделиться с младшими.

(Отредактировано автором: 11 Июня, 2013 - 20:57:08)



-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
jonston
Отправлено: 12 Июня, 2013 - 15:52:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




EuGen пишет:
Нет, зачем же так. Ввести роль "защищённый пользователь". И не давать редактировать профили пользователей, которые обладают этой ролью - никому, кроме тех, кто добавлял пользователя или администратора (это я вариант привожу, как у Вас по бизнес логике - сами решите).


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


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB