El GAM es una de las herramientas más poderosas que nos ofrece Genexus, nos facilita enormemente la tarea de la seguridad en nuestras aplicaciones. Sin embargo, muchas veces se puede tornar muy amplia, tiene una cantidad de métodos muy grandes lo cual puede complicar su uso.
El día de hoy, se realizó una pregunta en uno de los Chats de WhatsApp al cual pertenezco. La pregunta era como se podía obtener la información de un usuario del GAM. La idea es sencilla, muchas veces guardamos en una transacción el usuario, ¿Qué pasaría si necesitamos en un reporte imprimir el nombre en lugar del usuario? El API del GAM no tiene esta consulta por default, así que decidimos realizar un procedimiento que resuelva esta problemática, siendo el código el siguiente:
Source
&GAMUserFilter.Name = &UsuarioFiltro
&GAMUsers = GAMRepository.GetUsers(&GAMUserFilter, &GAMErrors)
For &GAMUser in &GAMUsers
&UsuarioGAM = &GAMUser
exit
Endfor
Rules
Parm(In: &UsuarioFiltro, Out: &UsuarioGAM);
Explicación
En este procedimiento haremos uso del API del GAM. El External Object GAMRepository tiene un método que nos devuelve los usuarios dependiendo los filtros que le mandemos, en este caso recibimos como parámetros un String que sería el usuario de Log. Esto nos devuelve un listado de Tipo GAMUser. Ya con esto iteramos este listado y devolvemos el primer resultado.
Posteriormente se puede implementar en cualquier objeto de la siguiente manera:
&UsuarioGAM = DevuelveUsuarioGAM.Udp(&Usuario)
Msg('First Name: ' + &UsuarioGAM.FirstName)
Msg('Last Name: ' + &UsuarioGAM.LastName)
Msg('Email: ' + &UsuarioGAM.EMail)
Msg('Phone: ' + &UsuarioGAM.Phone.ToString())
Msg('Birthday: ' + &UsuarioGAM.Birthday.ToString())
Msg('Address: ' + &UsuarioGAM.Address)
Msg('Gender: ' + &UsuarioGAM.Gender.ToString())
Dejo un link donde se puede descargar un XPZ con el ejemplo (Dar click Acá)
Average Rating