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!