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:
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!