6

¿Cuáles son los patrones de diseño para diseñar un sistema de privacidad como Facebook?¿Cómo maneja Facebook la configuración de privacidad en el lado de la base de datos?

El usuario decide qué información compartir según sus grupos de amigos. Toda la información del usuario (correo electrónico, teléfono) se almacena en la tabla de datos que solo muestra la clave = tabla de valores.

Tablas actuales:

  • usuario - (id)
  • UserData - (id, user_id, tipo de datos, valor)
  • Amistad - (user_id, friend_id, friendgroup_id)
  • FriendGroup - (user_id, nombre)

Ejemplo:

  • grupo X puede ver PHONE_1
  • grupo Y puede ver phone_2
  • Todos los grupos pueden ver phone_3

Este esquema se puede cambiar.

+0

programmers.stackexchange.com sería un foro mucho mejor para esta pregunta. Sugeriría moverlo allí ya que tienden a lidiar con preguntas de diseño como esta. – DMCS

+0

Esta pregunta no tiene ninguna respuesta ya que ningún empleado de FB realmente dirá cómo lo hacen. Podemos adivinar cómo lo hacen. – whihathac

Respuesta

2

Deberá crear la tabla de permisos para FriendGroup. En eso tienes que reunir el permiso otorgado a cada FriendGroup mientras haces grupo o el usuario puede cambiar ese permiso.

Prmissions (permission_id, friend_group, parámetro, visible)

Ejemplo:

  • grupo X puede ver PHONE_1
  • grupo
  • Y puede ver phone_2
  • Todos los grupos pueden ver phone_3
(1,x,phone_1,true) 
(1,Y,phone_2,true) 
(1,x,phone_3,true) 
(1,Y,phone_3,true) 

Puede más ver sobre ACL siguientes enlaces:

Database model with users, roles and rights

A Role-Based Access Control (RBAC) system for PHP

Patterns for building social network type applications?

0

se puede añadir un permiso nombre de la columna con todos los campos como

phone_number y phone_number_permission, photo y photo_permission y use value 0,1 , 2,3 en la columna de permiso

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 

tiene que administrar este permiso para ver los datos en la página de perfil.

si el usuario == amigo y permisos == 1 muestra los datos

Cuestiones relacionadas