Buenas a toda la comunidad
Tengo un trabajo en la U y me falta 1 día para entregarlo, yo elegí
hacerlo bajo CI pero estoy en completos quebraderos de cabeza =(
APLICACIÓN: Desarrollar una aplicación para gestionar usuarios,
niveles de acceso y permisos.
Lo que la aplicación puede hacer es:
USUARIOS:
- nuevo usuario
- Listar usuarios
PRODUCTOS
- nuevo producto
- listar productos
- buscar productos
FACTURAS
- nueva factura
- lista facturas
Por defecto la aplicación tiene creado un usuario (admin) con acceso a
los 7 links, entonces lo que hace es dar de alta a un nuevo usuario.
- id_usuario (autonumérico)
- nombre_usuario
- email (usado para acceder a la aplicación)
- password (aleatorio de 4 dígitos)
- permisos (Aquí en permisos me imagino a 7 checks con los accesos a
las diferentes partes)
NUEVO USUARIO:
Ejemplo 1:
- 1
- Manolo Garcia
-
man...@ci.com
- 4dg7
- buscar productos
Ejemplo 2:
- 2
- Pedro Picapiedra
-
pe...@ci.com
- um4f
- nueva factura, listar facturas
En el primer caso tratamos con el personal que se encarga de ver
existencias y en el ejm2 el vendedor.
He minimizado el problema completo, sí logro hacer funcionar esto
entonces puedo usar lo mismo para todo el sistema =(
LA SOLUCIÓN QUE INTENTE IMPLEMENTAR
Tabla: Menu
- id_menu
- nombre_menu
Tabla: Menu: conDATOS
- 1 USUARIOS
- 2 PRODUCTOS
- 3 FACTURAS
Tabla: subMenu
- id_subMenu
- id_menu
- nombre_subMenu
- urlSubMenu
Tabla: subMenu: conDATOS
- 1 1(USUARIOS) Nuevo usuario usuario/nuevo_usuario
- 2 1(USUARIOS) Listar usuarios usuario/listar_usuario
- 3 2(PRODUCTOS) Nuevo producto producto/nuevo_producto
- 4 2(PRODUCTOS) Listar productos producto/
listar_producto
- 5 2(PRODUCTOS) Buscar productos producto/
buscar_producto
- 6 3(FACTURAS) Nueva factura factura/nueva_factura
- 7 3(FACTURAS) Listar facturas factura/listar_factura
Tabla: permiso
- id_usuario
- id_menu
- id_subMenu
- estado
Con eso consigo asociar determinado acción a determinado usuario:
Ejm:
id_usuario = 1
id_menu = 2 (PRODUCTOS)
id_subMenu = 5 (BUSCAR PRODUCTOS)
estado = 1
Lo que se me ocurre es hacer de alguna forma que al momento de crear
al usuario y darle permisos me cree todos (7) aunque esten en estado 0
porque en determinado momento se puede cambiar esos permisos.
id_usuario = 1
id_menu = 2 (porque esta en el menu de PRODUCTOS)
id_subMenu = 4 (LISTAR PRODUCTOS)
estado = 0
Con esto manolo podría listar los productos pero esta en estado 0 osea
no le va a mostrar el Menú y no podrá acceder.
PROBLEMAS!
Logré hacer funcionar esto pero se me presentaron los siguientes
problemas:
- No controlo verdaderamente los accesos, un usuario que no esta
autentificado no tiene acceso a ninguna parte de la aplicación, pero
un usuario autentificado sí. Que no vea el menú para acceder a
determinada parte no quiere decir que no pueda hacerlo ya que
escribiendo la URL directamente puede entrar :O :( entonces ahí
debería decirle que no tiene permisos para ingresar a ésa área.
La solución que se me ocurré es cargar en un array todos los
urlSubMenu con estado 1 y validar continuamente que la opción que
elige el usuario este dentro de sus permisos.
No se si me estoy haciendo BOLAS o me estoy ahogando en un vaso de
agua lo cierto es que mi nivel en CI es muy bajo y hay cosas que me
cuestan trabajo entender. Imagino que para los experimentados en esto
es muy facil de hacer por lo que por favor si podrían sugerirme alguna
solución más decente?, más práctica?, más facíl? o usar la que tengo
con importantes mejoras.
Gracias! estoy muy al pendiente del HILO si algo no se entiende estoy
ahí para dar más detalles.