Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/08/2010, 14:55
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
[APORTE] Gestión de usuarios bit a bit

Definición de sistema de gestión de usuarios
Definición de operadores bit a bitNota: Recomiendo que lean este enlace, ya que no brindaré información al respecto en este aporte y es importante tener claro qué es lo que hacen los operadores bit a bit (especialmente el de AND => &) para poder entender cómo funciona este sistema de gestión de usuarios con operadores bit a bit.

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * Definir los permisos en constantes
  4.  */
  5. define('ACCESS_VIEW',1);
  6. define('ACCESS_ADD',2);
  7. define('ACCESS_EDIT',4);
  8. define('ACCESS_CREATE',8);
  9. define('ACCESS_ADMIN',16);
  10.  
  11. /**
  12.  * Para dar permisos solo tienes que sumar los bits
  13.  * En la siguiente variable tiene permiso para ver y crear
  14.  * va a tener un valor de 9 (1 => ACCESS_VIEW + 8 => ACCESS_CREATE)
  15.  * Para un usuario que quieras que vea todo, debes sumar todos los
  16.  * valores.  En este caso sería un total de 31
  17.  */
  18. //$access = 31; //Puede acceder a todo
  19. $access = 9;
  20.  
  21. /**
  22.  * Función para verificar si tiene los permisos
  23.  */
  24. function getAccess($bit1, $bit2){
  25.     return (((int)$bit1 & (int)$bit2) == 0) ? false : true;
  26. }
  27.  
  28.  
  29. if(getAccess($access, ACCESS_VIEW))
  30.     echo 'Tiene permisos de ver <br />';
  31. else
  32.     echo 'No tiene permisos de ver <br />';
  33.  
  34. if(getAccess($access, ACCESS_ADD))
  35.     echo 'Tiene permisos de añadir <br />';
  36. else
  37.     echo 'No tiene permisos de añadir <br />';
  38.  
  39. if(getAccess($access, ACCESS_EDIT))
  40.     echo 'Tiene permisos de editar <br />';
  41. else
  42.     echo 'No tiene permisos de editar <br />';
  43.  
  44. if(getAccess($access, ACCESS_CREATE))
  45.     echo 'Tiene permisos de crear <br />';
  46. else
  47.     echo 'No tiene permisos de crear <br />';
  48.  
  49. if(getAccess($access, ACCESS_ADMIN))
  50.     echo 'Tiene permisos de administrar <br />';
  51. else
  52.     echo 'No tiene permisos de administrar <br />';
Esta forma de hacerlo es buena si deseas que el usuario que crees entre a una parte específica de la aplicación.

Otra forma de usar este tipo de gestión de usuarios (no recomendado) es otorgando el permiso de acuerdo al rol. Es decir si el usuario tiene permiso de administrar, puede ver todo. La forma como lo puedes lograr es usando el símbolo de >=.
Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * Definir los permisos en constantes
  4.  */
  5. define('ACCESS_VIEW',1);
  6. define('ACCESS_ADD',2);
  7. define('ACCESS_EDIT',4);
  8. define('ACCESS_CREATE',8);
  9. define('ACCESS_ADMIN',16);
  10.  
  11. /**
  12.  * Para dar permisos solo tienes que indicar el bit que le corresponde
  13.  * En la siguiente variable tiene permiso para ver, añadir y editar
  14.  * va a tener un valor de 4 (4 => ACCESS_EDIT)
  15.  * Para un usuario que quieras que vea todo, debe tener el valor mayor,
  16.  * en este caso es 16 que es el de administrar
  17.  */
  18. //$access = 16; //Puede acceder a todo
  19. $access = 4;
  20.  
  21. if($access >= ACCESS_ADMIN)
  22.     echo 'Tiene permisos de administrar <br />';
  23. else
  24.     echo 'No tiene permisos de administrar <br />';
  25.  
  26. if($access >= ACCESS_CREATE)
  27.     echo 'Tiene permisos de crear <br />';
  28. else
  29.     echo 'No tiene permisos de crear <br />';
  30.  
  31. if($access >= ACCESS_EDIT)
  32.     echo 'Tiene permisos de editar <br />';
  33. else
  34.     echo 'No tiene permisos de editar <br />';
  35.  
  36. if($access >= ACCESS_ADD)
  37.     echo 'Tiene permisos de añadir <br />';
  38. else
  39.     echo 'No tiene permisos de añadir <br />';
  40.  
  41. if($access >= ACCESS_VIEW)
  42.     echo 'Tiene permisos de ver <br />';
  43. else
  44.     echo 'No tiene permisos de ver <br />';
El usarlo de esta forma se pierde el sentido de usar la gestión de usuarios con los operadores bit a bit. Ya que también esta forma se puede usar con tan solo indicar números corridos como 1, 2, 3, 4 y 5.

Edito:
Si tienen otro método, no duden en colocarlo, será de beneficio para muchos
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 07/08/2010 a las 23:26