Как Facebook обрабатывает настройки конфиденциальности на стороне базы данных? - PullRequest
6 голосов
/ 10 декабря 2010

Каковы шаблоны проектирования для разработки системы конфиденциальности, как Facebook.

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

Текущие таблицы:

  • Пользователь - (id)
  • UserData - (id, идентификатор_пользователя, тип данных, значение)
  • Дружба - (user_id, friend_id, friendgroup_id)
  • FriendGroup - (идентификатор_пользователя, имя)

Пример:

  • X группа может видеть phone_1
  • Y группа может видеть phone_2
  • Все группы могут видеть телефон_3

Эту схему можно изменить.

Ответы [ 4 ]

2 голосов
/ 12 апреля 2013

Я создал гем под названием «Настройки конфиденциальности», который поможет интегрировать простые настройки конфиденциальности в приложение Rails.Проверьте это: https://github.com/xuanchien/privacy_setting

2 голосов
/ 18 февраля 2012

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

Prmissions (access_id, friend_group, параметр, видимый)

Пример:

  • X группа может видеть phone_1
  • Y группа может видеть phone_2
  • Все группы могут видеть phone_3
(1,x,phone_1,true)
(1,Y,phone_2,true)
(1,x,phone_3,true)
(1,Y,phone_3,true)

ВыПодробнее о ACL можно узнать по следующим ссылкам:

Модель базы данных с пользователями, ролями и правами

Система управления доступом на основе ролей (RBAC) для PHP

Шаблоны для создания приложений типа социальных сетей?

0 голосов
/ 19 февраля 2012

вы можете добавить разрешение имени столбца со всеми полями, такими как

phone_number и phone_number_permission, photo и photo_permission и использовать значение 0,1,2,3 в столбце разрешений

permission rights
0. Not show to anyone
1. Show to friends
2. Show friends of friends
3. Show to groups and who are your friends

youдолжны управлять этим разрешением на просмотр данных на странице профиля.

, если пользователь == друг и разрешение == 1 показать данные

0 голосов
/ 14 февраля 2012

Вам нужна система управления правами на основе ролей.Посмотрите на CanCan или DeclarativeAuthorization gems.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...