Seguridad y Grupos de Usuarios en Access 2016
Publicado por Arturo Eduardo (8 intervenciones) el 21/07/2018 01:56:03
Saludos mis amigos.
Espero contar con su sabiduría para aclarar unas dudas.
Estoy construyendo una base de datos tipo agenda en access 2016 con seguridad por usuarios y grupos de usuario. Con las siguientes Tablas y Formularios:
TD_Usuario_Activo (Usuario)
TD_Usuarios (ID, Nombre, Contraseña)
TD_Grupos_Usuarios (ID, Nombre, Grupo_Superior,Observaciones)
TD_Formularios (ID, Nombre, Propietario, Observaciones)
TD_Permisos_Usuario (ID, Usuario, Formulario, Lectura, Agregar, Modificar, Eliminar [Si/No])
TD_Permisos_Grupo (ID, Grupo, Formulario, Lectura, Agregar, Modificar, Eliminar [Si/No])
TD_Ventas
TD_Articulos
TD_Stock
TD_Inventarios
TD_Cotizaciones
FRM_Acceso
FRM_Usuarios
FRM_Grupos
FRM_Permisos_Usuario
FRM_Permisos_Grupo
FRM_Articulos
FRM_Stock
FRM_Ventas
FRM_Inventarios
FRM_Cotizaciones
Hasta el momento, al abrir la base de datos:
* Se inicia con el FRM_Acceso, el cual solicita nombre de usuario y contraseña.
* Valida su permiso de acceso en TD_Usuarios y Registra el Usuario Activo en TD_Usuario_Activo,
* Al intentar acceder a cada formulario, se consulta el Usuario Activo y se validan sus permisos de acceso al formulario.
La proyecto es:
Crear una base de datos principal (Back-end) y diversas bases de datos con tablas vinculadas (front-end), en donde cada usuario pueda pertenecer a uno o varios grupos, y a su vez los grupos puedan pertenecer a otros grupos superiores, con sus respectivos permisos de usuario, permiso de grupo y permisos heredados, donde un mismo usuario pueda acceder a las diversas Front-End con sus respectivos accesos y permisos.
Existen actualmente 4 grupos de usuarios y sus permisos:
*** Sistemas
-FRM_Usuarios (Lectura +, Agregar +, Modificar +, Eliminar+)
-FRM_Grupos (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Permisos_Usuario (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Permisos_Grupo (Lectura +, Agregar +, Modificar +, Eliminar +)
*** Administración
-FRM_Ventas (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Cotizaciones (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Artículos (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Stock (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Inventarios (Lectura +, Agregar +, Modificar +, Eliminar +)
*** Vendedores (Administración)
-FRM_Artículos (Lectura -, Agregar -, Modificar -, Eliminar -)
-FRM_Stock (Lectura -, Agregar -, Modificar -, Eliminar -)
-FRM_Cotizaciones (Lectura +, Agregar +, Modificar +, Eliminar -)
-FRM_Ventas (Lectura +, Agregar +, Modificar -, Eliminar -)
-FRM_inventarios (Lectura +, Agregar -, Modificar -, Eliminar -)
*** Almacenistas (Administración)
-FRM_Cotizaciones (Lectura -, Agregar -, Modificar -, Eliminar -)
-FRM_Ventas (Lectura -, Agregar -, Modificar -, Eliminar -)
-FRM_Artículos (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Stock (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Inventarios (Lectura +, Agregar +, Modificar +, Eliminar +)
*** Auditoria (Administración)
-FRM_Cotizaciones (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Ventas (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Artículos (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Stock (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Inventarios (Lectura +, Agregar -, Modificar -, Eliminar +)
Existen 6 Usuarios
*** Administrador_Sistema (Sistemas)
*** Gerente (Administración)
-FRM_Ventas (Lectura +, Agregar -, Modificar +, Eliminar +)
-FRM_Cotizaciones (Lectura +, Agregar -, Modificar +, Eliminar +)
-FRM_Stock (Lectura +, Agregar +, Modificar +, Eliminar +)
*** Contador (Administración)
-FRM_Ventas (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Cotizaciones (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Stock (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Inventarios (Lectura -, Agregar -, Modificar -, Eliminar -)
*** Vendedor (Ventas)
*** Almacenista (Almacén)
*** Auditor (Auditoria)
Mis dudas son:
1.- Para abrir cada formulario debo consultar todos los permisos del usuario activo, permisos de su grupo y sus
permisos heredados ,¿Como hago eso?...
2.- Supongo que podría crear una Tabla "TD_Permisos_Usuario_Activo" para que, al acceder al formulario FRM_Acceso, validar el usuario, registra el nombre de usuario en TD_Usuario_Activo y sus respectivos permisos en "TD_Permisos_Usuario_Activo", para cuando intente acceder a cada formulario, consulte sus permisos en dicha tabla y permita el acceso o no. ¿Es correcto?
3.- Creo entender se deben realizar algún procedimiento recursivo para realizar la consulta de los derechos del usuario en TD_Permisos_Usuario y cargarlo en TD_Permisos_Usuario_Activo, después realizar la consulta de los derechos de su grupo en TD_Permisos_Grupo, y unificar lo permisos en TD_Permisos_Usuario_Activo, (dando preferencia a los permisos negados (-) mas que a los autorizados (+)), después que hacer una consulta del grupo padre, actualizar TD_Permisos_Usuario_Activo, y así hasta que el grupo padre sea "null"... o algo asi... y aqui es donde mis experiencia no me favorece en el tema de consultas.,
4.- Realmente no pido me solucionen el problema, sino que me orienten para poder encontrar la solución, algun link para la sintaxis de dicho procedimiento recursivo.
Agradezco de antemano sus aportaciones para reducir mi ignorancia,
Espero contar con su sabiduría para aclarar unas dudas.
Estoy construyendo una base de datos tipo agenda en access 2016 con seguridad por usuarios y grupos de usuario. Con las siguientes Tablas y Formularios:
TD_Usuario_Activo (Usuario)
TD_Usuarios (ID, Nombre, Contraseña)
TD_Grupos_Usuarios (ID, Nombre, Grupo_Superior,Observaciones)
TD_Formularios (ID, Nombre, Propietario, Observaciones)
TD_Permisos_Usuario (ID, Usuario, Formulario, Lectura, Agregar, Modificar, Eliminar [Si/No])
TD_Permisos_Grupo (ID, Grupo, Formulario, Lectura, Agregar, Modificar, Eliminar [Si/No])
TD_Ventas
TD_Articulos
TD_Stock
TD_Inventarios
TD_Cotizaciones
FRM_Acceso
FRM_Usuarios
FRM_Grupos
FRM_Permisos_Usuario
FRM_Permisos_Grupo
FRM_Articulos
FRM_Stock
FRM_Ventas
FRM_Inventarios
FRM_Cotizaciones
Hasta el momento, al abrir la base de datos:
* Se inicia con el FRM_Acceso, el cual solicita nombre de usuario y contraseña.
* Valida su permiso de acceso en TD_Usuarios y Registra el Usuario Activo en TD_Usuario_Activo,
* Al intentar acceder a cada formulario, se consulta el Usuario Activo y se validan sus permisos de acceso al formulario.
La proyecto es:
Crear una base de datos principal (Back-end) y diversas bases de datos con tablas vinculadas (front-end), en donde cada usuario pueda pertenecer a uno o varios grupos, y a su vez los grupos puedan pertenecer a otros grupos superiores, con sus respectivos permisos de usuario, permiso de grupo y permisos heredados, donde un mismo usuario pueda acceder a las diversas Front-End con sus respectivos accesos y permisos.
Existen actualmente 4 grupos de usuarios y sus permisos:
*** Sistemas
-FRM_Usuarios (Lectura +, Agregar +, Modificar +, Eliminar+)
-FRM_Grupos (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Permisos_Usuario (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Permisos_Grupo (Lectura +, Agregar +, Modificar +, Eliminar +)
*** Administración
-FRM_Ventas (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Cotizaciones (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Artículos (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Stock (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Inventarios (Lectura +, Agregar +, Modificar +, Eliminar +)
*** Vendedores (Administración)
-FRM_Artículos (Lectura -, Agregar -, Modificar -, Eliminar -)
-FRM_Stock (Lectura -, Agregar -, Modificar -, Eliminar -)
-FRM_Cotizaciones (Lectura +, Agregar +, Modificar +, Eliminar -)
-FRM_Ventas (Lectura +, Agregar +, Modificar -, Eliminar -)
-FRM_inventarios (Lectura +, Agregar -, Modificar -, Eliminar -)
*** Almacenistas (Administración)
-FRM_Cotizaciones (Lectura -, Agregar -, Modificar -, Eliminar -)
-FRM_Ventas (Lectura -, Agregar -, Modificar -, Eliminar -)
-FRM_Artículos (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Stock (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Inventarios (Lectura +, Agregar +, Modificar +, Eliminar +)
*** Auditoria (Administración)
-FRM_Cotizaciones (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Ventas (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Artículos (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Stock (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Inventarios (Lectura +, Agregar -, Modificar -, Eliminar +)
Existen 6 Usuarios
*** Administrador_Sistema (Sistemas)
*** Gerente (Administración)
-FRM_Ventas (Lectura +, Agregar -, Modificar +, Eliminar +)
-FRM_Cotizaciones (Lectura +, Agregar -, Modificar +, Eliminar +)
-FRM_Stock (Lectura +, Agregar +, Modificar +, Eliminar +)
*** Contador (Administración)
-FRM_Ventas (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Cotizaciones (Lectura +, Agregar -, Modificar -, Eliminar -)
-FRM_Stock (Lectura +, Agregar +, Modificar +, Eliminar +)
-FRM_Inventarios (Lectura -, Agregar -, Modificar -, Eliminar -)
*** Vendedor (Ventas)
*** Almacenista (Almacén)
*** Auditor (Auditoria)
Mis dudas son:
1.- Para abrir cada formulario debo consultar todos los permisos del usuario activo, permisos de su grupo y sus
permisos heredados ,¿Como hago eso?...
2.- Supongo que podría crear una Tabla "TD_Permisos_Usuario_Activo" para que, al acceder al formulario FRM_Acceso, validar el usuario, registra el nombre de usuario en TD_Usuario_Activo y sus respectivos permisos en "TD_Permisos_Usuario_Activo", para cuando intente acceder a cada formulario, consulte sus permisos en dicha tabla y permita el acceso o no. ¿Es correcto?
3.- Creo entender se deben realizar algún procedimiento recursivo para realizar la consulta de los derechos del usuario en TD_Permisos_Usuario y cargarlo en TD_Permisos_Usuario_Activo, después realizar la consulta de los derechos de su grupo en TD_Permisos_Grupo, y unificar lo permisos en TD_Permisos_Usuario_Activo, (dando preferencia a los permisos negados (-) mas que a los autorizados (+)), después que hacer una consulta del grupo padre, actualizar TD_Permisos_Usuario_Activo, y así hasta que el grupo padre sea "null"... o algo asi... y aqui es donde mis experiencia no me favorece en el tema de consultas.,
4.- Realmente no pido me solucionen el problema, sino que me orienten para poder encontrar la solución, algun link para la sintaxis de dicho procedimiento recursivo.
Agradezco de antemano sus aportaciones para reducir mi ignorancia,
Valora esta pregunta
0