Menú recursivo con seguridad del GAM en #Genexus


Genexus incluye un módulo de seguridad llamado Genexus Access Manager (GAM), para proveer a nuestras aplicaciones de un simple y centralizado esquema de todo lo relacionado a la autenticación y autorización.

Activar el GAM

Para activar el gam basta con poner en true las siguientes propiedades en la versión:
Enable Integrated Security = true
Integrated Security level = Authorization

Al activar estas propiedades se nos crearan algunos objetos de ejemplo así como una librería para controlar las funciones del GAM. Todos los objetos que tenemos en la KB serán agregados en automatico a los permisos del GAM con el prefijo _Execute , en el caso de las transacciones aparte de ese prefijo se les agregara _Insert, _Update, _Delete y _FullControl. Para este ejemplo nos enfocaremos en el permiso con prefijo _Execute.
Creación de la transacción opción
Para guardar las opciones que tendrá el menú, creamos una transacción llamada Opcion, con los siguientes atributos:
El atributo formula OpcionGAM, concatena al nombre del objeto y el prefijo _Execute, este atributo formula es el que utilizaremos para revisar si se tiene permisos sobre ese objeto.
Creamos un Subtipo llamado OpcionPadre lo cual nos permitirá la recursividad:
Usaremos la transacción Opcion, para cargar las opciones que tendrá nuestro menu.
Configurar menú en la master page
Agregamos el User Control SmoothNavMenu en nuestra master page:
Y en los eventos tendremos el siguiente código:
Carga del SmoothNavMenu
Para cargar el SmoothNavMenu utilizaremos el data provider SmoothNavMenuDataDP, lo editamos de la siguiente manera:
En los permisos de la aplicación del GAM, creamos los permisos para el menu.
En la transacción Opcion, agregamos las opciones que tendremos en el menu:
Ahora asignamos los permisos al rol, para poder visualizar estos menús:
Y asi es como quedaria nuestro menu, de manera recursiva y con la seguridad del GAM:
Espero les sea de ayuda y lo compartan.
Nota: En esta otra publicación pueden ver como agregar un menu css3 a genexus http://jenexus.blogspot.mx/2016/09/como-integrar-un-menu-responsivo-hecho.html

Jesús Rodríguez

Consultor Genexus Senior - Scrum Master, Emprendedor, siguiendo mis sueños.

4 comentarios: