Форум → Программирование → PHP для идиотов → Управление правами в социальной сети
Управление правами в социальной сети
Страницы: ← Предыдущая страница • Следующая страница →
-
27 июня 2010 г. 14:59, спустя 2 минуты 4 секунды
ебанись. мы говорим о том, что право даётся роли, т.е. "друзьям", а не конкретному человеку. человек просто получает роль и соотв. права опосредованно.
что касается "друзя друзей" ))), то этот вопрос действительно не освещен. повод проявить креативность.ιιlllιlllι унц-унц -
27 июня 2010 г. 15:03, спустя 4 минуты 26 секунд
"друзя друзей"
и как быть с друзья друзей друзей … n-друзей :DСпустя 16 сек.зы шутка :) -
27 июня 2010 г. 15:15, спустя 11 минут 53 секунды
определить является ли чел другом друга можно через доп. join
каждый следующий круг друзе-друзей потребует еще один join с таблицей relationsιιlllιlllι унц-унц -
28 июня 2010 г. 7:01, спустя 15 часов 45 минут 50 секунд
Сдается мне, будет неудобно в одном запросе проверять право непосредственно назначенной роли + право через друзей. А вот через PHP и доп. запрос можно.
$roleId = Relations::getUserRole($userId, $contextId);
if ($roleId == Roles::VISITOR && Roles::isFriendOfFriend($userId, $contextId)) {
$roleId = Roles::FRIEND2;
}
$rightsArray = Rights::getRoleRights($roleId, $contextId);ιιlllιlllι унц-унц -
27 июня 2010 г. 15:26, спустя 8 часов 25 минут 8 секунд
в Yii есть своеобразные bizRule… Наверно нужно что-то типа такого. -
28 июня 2010 г. 8:14, спустя 16 часов 47 минут 59 секунд
Теоретический материал: RBAC FAQ (English)
Чем роли отличаются от групп?
Мой корявый перевод.Существует поверхностное сходство между ролями RBAC и традиционными группами. Как правило, Группа представляет собой набор пользователей, а не набор разрешений и разрешения могут назначаться как напрямую пользователям, так и группам, в которые они входят. Способность давать права непосредственно пользователям можно рассматривать как "лазейку", ее трудно контролировать. RBAC требует, чтобы весь доступ происходил только через роли. Еще один аспект отличает его от традиционных механизмов: сессия, в рамках которой активируется подмножество ролей, назначенных пользователю. Минимальный набор (Core RBAC) включает в себя связи "многие-ко-многим" между пользователями и правами доступа.
Core RBAC можно реализовать через две таблицы: "роли, назначенные пользователям" и "права, назначенные ролям".
Кое-что о контексте.
Снова мой перевод."Тем не менее, для того чтобы доктор X мог просматривать электронную медицинскую карту пациента Y, недостаточно роли "Доктор", но нужна роль "Наблюдающий Врач" ПО ОТНОШЕНИЮ К пациенту Y. Другими словами, контроль доступа к медицинским картам опирается на особые отношения между доктором X и пациентом Y, что должно быть описано как основанная-на-отношениях роль (relation-based role)."
В этой теме я использую отношения между пользователем и хозяином контента (другой пользователь или группа) - таблица relations
Сами права роли —таблица rights — тоже содержат ссылку на контекст. Т.е. некая роль получает право не просто "смотреть картинку", а "смотреть картинку пользователя R2D2".
В принципе стандарт допускает наличие сразу нескольких активных ролей пользователя в рамках одной сессии. Но я для простоты принял, что в одном контексте пользователю будет соответствовать строго одна роль.ιιlllιlllι унц-унц -
2 августа 2010 г. 8:07, спустя 34 дня 23 часа 53 минуты
up
Раз уж мне подвернулся бесплатный VPS от МакХоста, стартую проект "социалка-песочница". Конечно управление правами там будет :)ιιlllιlllι унц-унц -
2 августа 2010 г. 11:01, спустя 2 часа 53 минуты 38 секунд
ну че, круто. Уже недели 3 прошло, а я так и не начал.
зы: почему ты так уперто отказываешься от PEAR/ZF class naming style? -
2 августа 2010 г. 11:06, спустя 5 минут 18 секунд
Абырвалг, он профессиональный велосипедист, а ты трехколесник, поэтмоу колеся у тебя из зф а велосипед из пира :DСпустя 27 сек.а у него все самодельное, даже теории свои разработаны по поводу создания велосипедов :DСапожник без сапог -
2 августа 2010 г. 11:14, спустя 8 минут 3 секунды
ну у меня умеренная велосипедность, а у него черезмерная -
2 августа 2010 г. 11:25, спустя 10 минут 31 секунду
ну молодцы, постебались. мой нейминг на 99% от Zend. только не будет безумно длинных имен с подчерками - просто не наберу того уровня непомерной сложности, когда он нужен.
http://qb7.ru/docs/naming.standard.ru.htmlιιlllιlllι унц-унц -
2 августа 2010 г. 11:34, спустя 9 минут 16 секунд
у Фабьена меньше текста получилось)
http://docs.symfony-reloaded.org/contributing/code/standards.html -
2 августа 2010 г. 11:45, спустя 11 минут 5 секунд
Фабьен еще не пугает бинарник?https://smappi.org/ - платформа по созданию API на все случаи жизни -
2 августа 2010 г. 11:49, спустя 3 минуты 49 секунд
Абырвалг, ну и в рот ему ноги :)ιιlllιlllι унц-унц -
2 августа 2010 г. 11:51, спустя 2 минуты 7 секунд
На счет разграничения прав можно делать так:
Есть таблица с правами:
right_id | desc
1 | read
2 | write
3 | update
4 | delete
И есть таблица с юзерами:
user_id | access
1 | 1
2 | 2,4
3 | 1,2,4
То-есть есть примитивные права по типу чтение запись удаление и т.д., юзеру назначается либо один примитив, либо смесь примитивов.
Система получается легко расширяемой на предмет доступных прав.
Можно еще прикрутить систему обязанностей возлагающихся на каждое примитивное право, чем больше прав, тем больше обязанностей :)
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!