Obtener Roles y otros datos del usuario logueado, GeneXus


Para solventar este requerimiento podemos tomar en cuenta 2 posibilidades.

Primer caso) Nos creamos una variable GamUser y con su metodo GetAllRoles obtenemos los roles del usuario logueado, ejemplo:

Variables del Procedimiento:

Source del Procedimiento:
//Para ver los roles con una variable de tipo GamUser
&GamUser = GamUser.Get()
For &GamRole in &GamUser.GetAllRoles(&Errors)
Msg(&Pgmname + "###Rol: " + &GamRole.Name.ToString(), status)
Endfor


Segundo caso) Nos crearemos una variable GamSession y con su método GetRoles obtenemos los roles del usuario logueado, ejemplo:

Variables del Procedimiento:

Source del Procedimiento:
//Para ver los roles con una variable de tipo GamSession
&GamSession = GAMSession.Get(&Errors)
For &GamRole in &GamSession.GetRoles(&Errors)
Msg(&Pgmname + "###Rol: " + &GamRole.Name.ToString(), status)
Endfor

//Con GamSession podemos ver mas datos importantes, ejemplo:
//nick, primer nombre, primer apellido, GUID, entre otros
Msg(&Pgmname + '###Nick: ' + &GamSession.User.Name + 
"###Primer Nombre: " + &GamSession.User.FirstName + 
"###Segundo Nombre: " + &GamSession.User.LastName + 
"###GUID: " + &GamSession.User.GUID + 
"###Tipo Autent: " + &GamSession.User.AuthenticationTypeName, status)


Cualquiera de las dos formas nos sirven para obtener datos del usuario logueado.

También podríamos verificar si el usuario logueado tiene rol administrador y mandarlo a una pantalla y si no es administrador se manda a otra, ejemplo:

//Si es administrador a una pantalla si no a otra
If GAMUser.CheckRoleByExternalId(!"is_gam_administrator")
Msg(&Pgmname + '###' +  "Es administrador", status)
        PantallaSeguridad.Call()
Else
Msg(&Pgmname + '###' +  "No es administrador", status)
        PantallaHome.Call()
Endif 

Comentarios