Foros del Web » Programando para Internet » PHP »

Problema con permisos

Estas en el tema de Problema con permisos en el foro de PHP en Foros del Web. tengo un problema con unos datos que quieren que vean ciertos usuarios y otros no, en principio suena facil pero ya me estoy enredando, les ...
  #1 (permalink)  
Antiguo 25/04/2011, 13:26
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Problema con permisos

tengo un problema con unos datos que quieren que vean ciertos usuarios y otros no, en principio suena facil pero ya me estoy enredando, les explico.


tengo los siguientes datos ingresados

x - dato - usuario
1 - perro - usuario1
2 - gato - usuario 2
3 - pato - usuario 3
4 - ratón - usuario 4

hasta aquí la cosa es así, en principio todos los usuarios podían editar lo de todos y ademas sus propios registros por lo cual no había problema, el problema me surgio cuando me pidieron que el usuario 3 solo el podia editar sus registros y nadie más y el resto aunque podia ver su registro no podia hacer nada

para ello me cree un if que preguntaba

Código PHP:
Ver original
  1. if (($datos[user_basedatos] != "usuario3") OR ($datos[user_basedatos] == "$user_session")){
  2. echo "muestro";
  3. }
  4. else
  5. {
  6. echo "no muestro";
  7. }

con esto aplicaba que todos podian ver los datos de los demas excepto los de usuario3 y que usuario 3 podia ver todo, mi pregunta es ahora, me pidiron que usuario2 pueda ver los registros de usuario3, y aquí no me sale mi if :/ por mas AND && y OR's que he puesto nada :/ mi otra pregunta es, yo tengo muchos usuarios esto es un ejemplo, habra una forma de hacer ojala un solo if y leer un arreglo de usuarios que puedan ver lo de usuario3 ya que este y solo este es un usuario especial.

ojala me puedan hechar un cable yo estoy mareado ya
Saludos
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #2 (permalink)  
Antiguo 25/04/2011, 13:52
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Problema con permisos

yo haría una reingeniería a tu sistema, primero cambiaría la base de datos así:

x - dato - usuario - acceso
1 - perro - usuario1 - 0
2 - gato - usuario 2 - 2
3 - pato - usuario 3 - 1
4 - ratón - usuario 4 - 0

la idea es que cada usuario solo pueda ver a los usuarios de accesos iguales o menores, por ejemplo usuario3 podria verlos a todos menos al usuario2, mientras que usuario 2 podria verlos a todos, por otro lado usuario1 y usuario4 no podrian editar a usuario2 ni usuario3

entonces tu if tendria que ser así:


Código PHP:
Ver original
  1. if ($datos[user_access]>=$reg[user_access]){
  2. echo "muestro";
  3. }
  4. else
  5. {
  6. echo "no muestro";
  7. }

$datos[user_access] es el nivel de acceso del usuario que esta navegando
$reg[user_access] es el nivel de acceso del usuario que se esta viendo

solo si el usuario navegando tiene un nivel mayor o igual al que se esta viendo podra editarlo.
  #3 (permalink)  
Antiguo 25/04/2011, 14:08
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Problema con permisos

Toda la razón para stramin así en un futuro tal vez te pidan que "pepito" vea pero no edite, o vea el tema de "juanito" y deba eliminar algo de él, yo por mi parte, tengo una tabla con aplicaciones (almaceno todas las rutas de las páginas .php) de esta forma si un Usuario x necesita por ejemplo permiso para ver una página se la asigno, y juego con las opciones de lectura , escritura y modo Dios por ahora no me e encontrado en ningún aprieto con este sistema de trabajo, además tengo un mantenedor de permisos , asi asigno los permisos a las personas que se deban y los registros nuevos (usuarios) entran con un "perfil de aplicaciones" de manera predeterminada
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #4 (permalink)  
Antiguo 25/04/2011, 14:56
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Problema con permisos

Pues ya lo había pensado y no creo que sea necesario rehacer o agregar mas campos a mi base de datos el tema ya que hay usuarios de mismo nivel para otras consultas y esta es especial solamente por que al usuario2 se le ocurrió ver lo del usuario3 también y solo a el, estos dos tipo según permisos no deberían poder verse pero en este caso especial si, entonces.

1.- todos los usuarios puedan editar sus propios campos y los de los demás excepto los del usuario 3
2.- usuario3 pueda editar y ver todos los campos
3.- usuario2 pueda editar y ver todos los campos

entonces si estoy logeado con usuario1 debería poder editar todos menos los registros de usuario3

usuario 3 y dos podrían editar todos hasta aquí suena fácil, por que en el caso de arriva compruebo que se diferente y pasa y aquí que el registro ingresado sea igual que usuario3

pero con el usuario2. tengo problemas, de todas formas creo que me diste una idea y es crear accesos pero directamente en el codigo por los usuarios estos especiales, voy a ver que tal.

Saludos
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #5 (permalink)  
Antiguo 25/04/2011, 15:03
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Problema con permisos

vaya, así se ve bastante difícil tendrías que poner una gran familia de ifs con muchos tataranietos...
  #6 (permalink)  
Antiguo 25/04/2011, 15:03
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Problema con permisos

y en esta linea si colocas :

Código PHP:
Ver original
  1. if (($datos[user_basedatos] != "usuario3") OR ($datos[user_basedatos] != "usuario2")
  2. OR ($datos[user_basedatos] == "$user_session")){
  3.  
  4. echo "muestro";
  5.  
  6. }
  7.  
  8. else
  9.  
  10. {
  11.  
  12. echo "no muestro";
  13.  
  14. }

Porque si lo tenias con && no te mostraba por no cumplir con usuario 2 y 3 a la misma vez
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #7 (permalink)  
Antiguo 25/04/2011, 15:28
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problema con permisos

Que tal kaninox,

Te sugiero que busques info sobre ACL y la podrias implementar utilizando bitwise operations, te dejo un par de referencias:

http://codingrecipes.com/how-to-writ...rations-in-php
http://www.litfuel.net/tutorials/bitwise.htm

Mantener un sistema de permisos a base de if(is_admin && is_guest && ...), no es una buena idea, un simple cambio en los requisitos y puede ser un verdadero dolor de cabeza.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #8 (permalink)  
Antiguo 25/04/2011, 15:39
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Problema con permisos

pues lo primero que se me vino a la mente fue eso y no me resultaba lo que pasa es que hay dice muéstrame si el registro del usuario es distinto a usuario3 o bien el registro es igual al usuario que lo creo.

entonces si me logeo y veo el if

x - dato - usuario
1 - perro - usuario1
2 - gato - usuario 2
3 - pato - usuario 3


caso usuario1 --- registro1 es distinto a usuario3 --- Si edito!!!//correcto
caso usuario1 --- registro2 es distinto a usuario3 --- Si edito!!!//correcto
caso usuario1 --- registro3 es distinto a usuario3 --- No edito!!! es igual Si edito!!!!//correcto

caso usuario3 --- registro1 es distinto a usuario3 --- No edito!!! es igual Si edito//correcto
caso usuario3 --- registro2 es distinto a usuario3 --- No edito!!! es igual Si edito//correcto
caso usuario3 --- registro3 es distinto a usuario3 --- No edito!!!//correcto

caso 2 - aquí el problema, en tu if estas comparando con el usuario de base de datos si es distinto a usuario2 y tengo que ver de alguna forma si el registro es del usuario3 el usuario2 también lo puedo editar :/


Edito : Masterpuppet le vamos a dar una checada a los links gracias ;)
__________________
Gokuh Salvo al mundo. PUNTO!!!!

Etiquetas: permisos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:49.