lunes, 1 de febrero de 2010

Acceso a AX para ocupar solamente una licencia

Hola, con estas lineas de codigo se puede controlar el acceso a AX para ocupar solo una licencia por usuario y no permitirle conectarse más de una vez.


Hay que buscar en la clase "Info" el método "startupPost" y asignarle el código siguiente:
void startupPost()
{
    int cuentaSesionActiva = 0;
    UserId IdUsuario;
    SysClientSessions _SysClientSessions;
    ;
   
    IdUsuario = curuserid(); // capturamos el id del usuario
    while select RecId from _SysClientSessions order by login_time desc
               where _SysClientSessions.userId == curuserid() && _SysClientSessions.Status == 1
   {
       if (_SysClientSessions.RecId)
          cuentaSesionActiva = cuentaSesionActiva + 1; //Acumula el número de logins activos del usuario en el
                                                                                    sistema
      else
          cuentaSesionActiva = 0;
    }

    if (cuentaSesionActiva > 1)
   {
        infolog.shutDown(false);
   }

}

Bueno este codigo ya lo he probado con ax 4 y ax 2009 y funciona bien.
Este código como verán es muy simple, pero dejo a imaginación del lector todo lo que se puede hacer, por ejemplo yo hecho que el ax diferencie usuarios por empresas y cada empresa tenga un numero limitado de licencias.

Saludos.

No hay comentarios:

Publicar un comentario