elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [POO]Sistema de usuario y privilegios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [POO]Sistema de usuario y privilegios  (Leído 4,711 veces)
jperezmonge

Desconectado Desconectado

Mensajes: 24


Chronos Estudios


Ver Perfil
[POO]Sistema de usuario y privilegios
« en: 17 Abril 2012, 13:53 pm »

Pues resulta que me estoy pasando de PHP estructurado a PHP POO y por ahora todo perfecto, el listado me funciona perfectamente, pero ha llegado el momento de crear el sistema de usuario y controlar los privilegios del usuario en el listado y la verdad es que no tengo mucha idea de como implementarlo.. echarme una mano por favor.

SALUDOS ALEX.


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: [POO]Sistema de usuario y privilegios
« Respuesta #1 en: 17 Abril 2012, 14:00 pm »

Hola,


Yo lo que suelo hacer, es guardar en una variable (array) toda la información del usuario, desde nombre, email, privilegios etc. etc... Toda esa información obviamente la puedes sacar de la base de datos.

Luego, cuando el usuario intenta ejecutar una acción, compruebo si tiene los privilegios necesarios mediante dicha variable.. y si no los tiene le tiro error.

Código
  1. class myMom {
  2.  private $user = array('name'=>'papanoel','previlegios'=>array('borrar'=>false));
  3. }

Saludos



En línea

jperezmonge

Desconectado Desconectado

Mensajes: 24


Chronos Estudios


Ver Perfil
Re: [POO]Sistema de usuario y privilegios
« Respuesta #2 en: 17 Abril 2012, 14:08 pm »

Mira te digo yo como tengo echa la base de datos y como pretendo hacer la clase usuario.

Código
  1. CREATE TABLE usuario(
  2. USER VARCHAR(255) PRIMARY KEY,
  3. password VARCHAR(512) NOT NULL,
  4. tipoPerfil VARCHAR(75) NOT NULL DEFAULT 'Anonimo',
  5. tipoCentro VARCHAR(255) NOT NULL,
  6. nombreSede VARCHAR(255) NOT NULL,
  7. departamentoSede VARCHAR(255) NOT NULL DEFAULT '----------',
  8. fechaMoficacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  9. CONSTRAINT fk_sede_usuario FOREIGN KEY(tipoCentro, nombreSede, departamentoSede) REFERENCES sede(tipoCentro, nombreSede, departamentoSede) ON UPDATE CASCADE ON DELETE RESTRICT,
  10. CONSTRAINT fk_perfilUsuario_usuario FOREIGN KEY(tipoPerfil) REFERENCES perfilUsuario(tipoPerfil) ON UPDATE CASCADE ON DELETE RESTRICT
  11. )ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci;

Entonces supongo que tengo hacer en la clase usuario un método que sea comprobarPrivilegios y mirar el tipoPerfil(privilegios) y su respectivo controlador no?

Pero luego desde donde lanzo digamos al controlador, con la acción, y como paso la variable a la sesión, y demás.
« Última modificación: 17 Abril 2012, 14:26 pm por jperezmonge » En línea

Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
Re: [POO]Sistema de usuario y privilegios
« Respuesta #3 en: 17 Abril 2012, 21:58 pm »

Echale un ojo a :
http://scripts.ringsworld.com/user-authentication/vsignup-2.5/

es la nueva version de VAuthenticate, uno de los mejores sistemas de manejo de usuarios en php que he visto.
En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
jperezmonge

Desconectado Desconectado

Mensajes: 24


Chronos Estudios


Ver Perfil
Re: [POO]Sistema de usuario y privilegios
« Respuesta #4 en: 18 Abril 2012, 12:09 pm »

Le he echado un vistazo y tiene muy buena pinta lo que pasa que se pasan de mis requisitos y ademas necesito implementarlo en POO.
« Última modificación: 18 Abril 2012, 12:12 pm por jperezmonge » En línea

raul_samp

Desconectado Desconectado

Mensajes: 36



Ver Perfil
Re: [POO]Sistema de usuario y privilegios
« Respuesta #5 en: 27 Abril 2012, 18:50 pm »

Pues resulta que me estoy pasando de PHP estructurado a PHP POO y por ahora todo perfecto, el listado me funciona perfectamente, pero ha llegado el momento de crear el sistema de usuario y controlar los privilegios del usuario en el listado y la verdad es que no tengo mucha idea de como implementarlo.. echarme una mano por favor.

SALUDOS ALEX.

Lo primero tienes que hacer un diseño de lo que tu sistema de usuarios va a contener.
Es decir tipos de usuarios, sus diferencias, privilegios y demás.
Una vez tengas claro eso una forma de hacerlo es crear una clase abstracta usuario que tenga toda la información que forma a un usuario (tipico: nombre, pass, privilegios y cosas asi).
Cada tipo de usuario (Ej: Administrador) hereda de esta clase e inicializa correctamente sus atributos.

La clase Usuario debe tener métodos para generar la sesión y encargarse de la persistencia en la BBDD (la verdad es que esto estaría mejor con un diseño MVC pero así da el pego)

Al principio de cada pagina (o de cada controlador si usas MVC) deberías comprobar si el usuario cumple los requisitos indicados para ver la página en cuestión. Eso si lo estas haciendo sin ningún framework lo podrías hacer incluyendo en cada pagina al principio el mismo modulo que cumple esta función.

Este módulo tendría que tener una función de este estilo.

En pseudo-código:
Código:
func redireccionaSiNoEs(tipoDeUsuarioNecesario):
    usuario = obtenerUsuarioEnSesion();
    si usuario == null:
        redireccionaALogin();
    si no:
        si usuario noEsInstanciaDe tipoDeUsuarioNecesario:
            redireccionaALogin();

Hay que tener en cuenta que la seguridad de esto no es muy buena que se diga. Pero la idea es la misma añadiendo más cosas (comprobar la correlación con la BBDD por ejemplo).

El aspecto que tienes que aprovechar es el polimorfismo, para ti todo tienen que ser Usuarios de una manera genérica a excepción de cuando los creas.

El problema que se plantea es la persistencia en la BBDD, no es común guardar un objeto así a capón serializado en una BBDD, (por lo menos no en esto), por eso deberías hacer una clase gestor de Usuarios que se encargue de con un nombre de usuario darte el objeto instanciado con los datos de la BBDD (ed: en la BBDD tiene que haber un campo tipo de usuario como supongo que tendrías).
Esa misma clase podría encargarse de dado un usuario guardarlo en la BBDD (así le quitamos responsabilidades a Usuario que se va pareciendo más a un modelo)

Bueno lo mismo me estoy extendiendo mucho, y no quiero que me hagas un tl;dr. Así que si con esto tienes más o menos una idea de como plantearlo, me alegro de haberte ayudado, si no, puedes preguntar más.

Un saludo!
En línea

Yeah Mr. White, yes science!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
es posible modificar el registro siendo un usuario sin privilegios?
Programación Visual Basic
rantam 2 2,571 Último mensaje 11 Noviembre 2007, 04:25 am
por rantam
keylogger que funcione en usuario limitado..!!!con privilegios de administrador. « 1 2 »
Análisis y Diseño de Malware
fulano_detal 14 11,351 Último mensaje 15 Junio 2010, 04:39 am
por fulano_detal
privilegios de usuario
GNU/Linux
biznaka 2 2,093 Último mensaje 29 Marzo 2011, 18:23 pm
por biznaka
Seguridad privilegios usuario registrado
PHP
Pirat3net 3 1,837 Último mensaje 26 Noviembre 2012, 00:44 am
por gowend
Ayuda con la validacion de un login con privilegios de usuario
PHP
jaoc6 1 2,600 Último mensaje 23 Marzo 2018, 06:32 am
por #Aitor
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines