Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/04/2013, 08:15
Avatar de stramin
stramin
 
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 10 meses
Puntos: 336
Acumulación de permisos

Hola a todos.

Estoy haciendo un sistema de permisos que permite definir distintos niveles de acceso mediante operadores bit a bit donde:

1: Tiene permiso de lectura
2: Tiene permiso de escritura
4: Tiene permiso de eliminación

Un ejemplo de acceso sería:

$SectorA = 3 (En el sector A puede leer y escribir, pero no eliminar)
$SectorB = 7 (Tiene permiso total en el sector B)
$SectorC = 0 (No tiene permisos en el sector C)

recientemente salió el tema de tener más de un perfil de acceso los cuales serían acumulativos, por ejemplo, un usuario que tiene 2 perfiles, uno con acceso 1 y el otro con acceso 3 debería darme un acceso de 3, me explico:

Ejemplo 1

Perfil usuario = 1 (solo lectura)
Perfil moderador = 3 (lectura y escritura)

Perfil usuario + Perfil moderador = 3 (Lectura y escritura)
Ya que 001 + 010 = 011

Ejemplo 2

Perfil usuario = 1 (solo lectura)
Perfil ejecutor = 4 (solo eliminación)

Perfil usuario + Perfil ejecutor = 5 (Lectura y eliminación)
Ya que 001 + 101 = 101

Ejemplo 3

Perfil usuario = 1 (solo lectura)
Perfil moderador = 3 (lectura y escritura)
Perfil ejecutor = 4 (solo eliminación)

Perfil usuario + Perfil moderador + Perfil ejecutor = 7 (Acceso total)
Ya que 001 + 010 + 101 = 111

Espero que se entienda, ahora la pregunta, cual sería la forma más optima de hacer esta acumulación de perfiles? existe en PHP algún operador bit a bit que permita acumular bits?

o sea algo que diga que:

1+1=1
1+2=3
2+3=3
1+2+3+4+5+6+7=7

Saludos!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D