コード例 #1
0
        public override object ExecuteCommand(InCourseRequest inCourseRequest)
        {
            string response = string.Empty;

            if (valida)
            {
                InfoCliente   infoCliente   = new InfoCliente(Utils.GetIpAddress(), inCourseRequest.Origen);
                UsuarioEntity usuarioEntity = new UsuarioEntity()
                {
                    Username = NombreUsuario,
                    Pass     = Password
                };
                M4TraderUserSessionLogin userSession = LoginHelper.Login(NombreUsuario, Password, infoCliente, TipoAplicacion.API);
                if (userSession.Ok && userSession.DobleAutenticacion == false)
                {
                    response = MAEUserSession.Instancia.ID;
                }
                else if (userSession.Ok && userSession.DobleAutenticacion == true)
                {
                    TwoFactorAuthenticator autenticador = new TwoFactorAuthenticator();
                    //var setupInfo = autenticador.GenerateSetupCode("M4Trader",
                    //userSession.TokenGuid,
                    //"ALSKDMASKLDMKALDKSA", 300, 300);
                }
                else
                {
                    response = userSession.Message;
                }
            }

            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(response));
        }
        public override object ExecuteCommand(InCourseRequest inCourseRequest)
        {
            string response = string.Empty;

            if (valida)
            {
                UsuarioEntity usuarioEntity = new UsuarioEntity()
                {
                    Username = NombreUsuario,
                    Pass     = Password
                };

                TwoFactorAuthenticator twoFA = new TwoFactorAuthenticator();
                string userUniqueKey         = NombreUsuario + "qaz123";

                bool isValid = twoFA.ValidateTwoFactorPIN(userUniqueKey, M4TraderPin);

                if (isValid)
                {
                    InfoCliente infoCliente = new InfoCliente(Utils.GetIpAddress(), inCourseRequest.Origen);
                    M4TraderUserSessionLogin userSession = LoginHelper.Login2FA(NombreUsuario, Password, infoCliente, TipoAplicacion.API, isValid);
                }
                //response = "Is Valod";
            }

            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(response));
        }
コード例 #3
0
        public static M4TraderUserSessionLogin Login(string userName, string password, InfoCliente infoCliente, TipoAplicacion tipoAplicacion, string NombreAgencia = null, bool passHashed = false)
        {
            UserValido resultValidacion = new UserValido();

            try
            {
                resultValidacion = ValidateUser(userName, password, infoCliente, tipoAplicacion, NombreAgencia, passHashed);
            }

            catch (SessionException ex)
            {
                resultValidacion.NeedNewPassword = true;
                resultValidacion.IsOK            = false;
                resultValidacion.MensajeError    = ex.Code;
                resultValidacion.TokenGuid       = "";
            }
            MAEUserSession usuarioSession = null;

            if (MAEUserSession.InstanciaCargada)
            {
                usuarioSession = MAEUserSession.Instancia;
            }


            M4TraderUserSessionLogin userSessionLogin = new M4TraderUserSessionLogin()
            {
                Ok = resultValidacion.IsOK,
                DobleAutenticacion        = CachingManager.Instance.GetConfiguracionSeguridad().TieneDobleFactor,
                Message                   = resultValidacion.MensajeError,
                NeedNewPassword           = resultValidacion.NeedNewPassword,
                TokenGuid                 = resultValidacion.TokenGuid,
                SessionId                 = (usuarioSession == null) ? "" : usuarioSession.ID,
                IdUsuario                 = usuarioSession.IdUsuario,
                IdTipoPersona             = usuarioSession.IdTipoPersona,
                UserName                  = (usuarioSession == null) ? "" : usuarioSession.UserName,
                EstadoSistema             = (usuarioSession == null) ? "" : usuarioSession.EstadoSistema,
                TipoPersona               = (usuarioSession == null) ? "" : UserHelper.getNombreTipoPersona(usuarioSession.IdTipoPersona),
                NombrePersona             = (usuarioSession == null) ? "" : UserHelper.GetNombrePersona(usuarioSession.IdPersona),
                FechaSistema              = CachingManager.Instance.GetFechaSistema().FechaSistema,
                FechaFinalizacionSesion   = (usuarioSession == null) ? DateTime.Now : usuarioSession.FechaFinalizacion,
                JavascriptAllowedCommands = (usuarioSession == null) ? new System.Collections.Generic.Dictionary <string, string>() :usuarioSession.JavascriptAllowedCommands,
                PermisosUsuario           = (usuarioSession == null) ? new System.Collections.Generic.Dictionary <string, bool>() : usuarioSession.PermisosUsuario,
                LoginRealizado            = (usuarioSession == null) ? false : usuarioSession.LoginRealizado,
            };

            return(userSessionLogin);
        }
コード例 #4
0
        public override ExecutionResult ExecuteCommand(InCourseRequest inCourseRequest)
        {
            MAEUserSession usuarioSession = SessionHelper.GetSesionExistente(inCourseRequest.SecurityTokenId);

            M4TraderUserSessionLogin userSessionLogin = new M4TraderUserSessionLogin()
            {
                SessionId                 = usuarioSession.ID,
                UserName                  = usuarioSession.UserName,
                EstadoSistema             = usuarioSession.EstadoSistema,
                TipoPersona               = UserHelper.getNombreTipoPersona(usuarioSession.IdTipoPersona),
                NombrePersona             = UserHelper.GetNombrePersona(usuarioSession.IdPersona),
                FechaSistema              = CachingManager.Instance.GetFechaSistema().FechaSistema,
                FechaFinalizacionSesion   = usuarioSession.FechaFinalizacion,
                JavascriptAllowedCommands = usuarioSession.JavascriptAllowedCommands,
                PermisosUsuario           = usuarioSession.PermisosUsuario
            };

            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(userSessionLogin));
        }
コード例 #5
0
        public override object ExecuteCommand(InCourseRequest inCourseRequest)
        {
            TravelLogin response = new TravelLogin();

            if (valida)
            {
                InfoCliente   infoCliente   = new InfoCliente(Utils.GetIpAddress(), inCourseRequest.Origen);
                UsuarioEntity usuarioEntity = new UsuarioEntity()
                {
                    Username = NombreUsuario,
                    Pass     = Password,
                    Agencia  = inCourseRequest.Agencia
                };
                M4TraderUserSessionLogin userSession = LoginHelper.Login(NombreUsuario, Password, infoCliente, TipoAplicacion.API, usuarioEntity.Agencia);
                if (userSession.Ok && !userSession.DobleAutenticacion)
                {
                    response.Token         = MAEUserSession.Instancia.ID;
                    response.IdUsuario     = userSession.IdUsuario;
                    response.IdTipoPersona = userSession.IdTipoPersona;
                    response.TipoPersona   = userSession.TipoPersona;
                    response.Status        = 1;
                }
                else if (userSession.DobleAutenticacion)
                {
                    response.Message = "Ingrese nuevo control ";
                    response.Status  = 2;
                }
                else
                {
                    response.Message = userSession.Message;
                    response.Status  = 3;
                }
            }

            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(response));
        }
コード例 #6
0
        //public void ClearSession(Guid idSesion)
        //{
        //    string keyCache = KEY_SESSION_BY_ID + idSesion.ToString();
        //    MAEUserSession session = CacheLayer.Get<MAEUserSession>(keyCache);

        //    if (session != null)
        //    {
        //        CacheLayer.Clear(keyCache);
        //    }
        //}

        public M4TraderUserSessionLogin GetMaeUserSessionLogin(string idSesion, long idAplicacion = (long)TipoAplicacion.ORDENES)
        {
            string keyCache = KEY_SESSION_BY_ID_LOGIN + idSesion.ToString();
            M4TraderUserSessionLogin session = CacheLayer.Get <M4TraderUserSessionLogin>(keyCache);

            if (session == null)
            {
                Dictionary <string, string> javascriptAllowedCommands = new Dictionary <string, string>();
                Guid IdSesion  = OrdenesApplication.Instance.GetSessionIdFromRequest(idSesion);
                int  IdUsuario = 0;
                Dictionary <string, int> mapeoAcciones = new Dictionary <string, int>();
                var Acciones = CachingManager.Instance.GetAllAcciones();
                OrdenesApplication.Instance.GetComandosHabilitados((TipoAplicacion)idAplicacion)
                .ForEach(cmd =>
                {
                    var k = OrdenesApplication.Instance.Encryptor.DynamicEncryption(cmd.FullName);
                    javascriptAllowedCommands.Add(cmd.Key, k);
                    mapeoAcciones.Add(k, cmd.IdAccion);
                });
                using (OrdenesContext dbContext = new OrdenesContext())
                {
                    var sesion = dbContext.Sesion.Where(x => x.IdSesion == IdSesion).FirstOrDefault();
                    IdUsuario = sesion.IdUsuario;
                    int idEstadoSistema = dbContext.EstadoSistema.Where(p1 => p1.IdEstadoSistema != 0).Max(r => r.IdEstadoSistema);
                    var estadoSistema   = dbContext.EstadoSistema.Where(p => p.IdEstadoSistema == idEstadoSistema).FirstOrDefault();
                    session = (from s in dbContext.Sesion
                               join u in dbContext.Usuario on s.IdUsuario equals u.IdUsuario
                               join p in dbContext.Persona on u.IdPersona equals p.IdParty
                               where s.IdSesion == IdSesion
                               select new M4TraderUserSessionLogin()
                    {
                        Ok = true,
                        NombrePersona = p.Name,
                        TipoPersona = UserHelper.getNombreTipoPersona(p.IdPartyType),
                        EstadoSistema = estadoSistema.EstadoAbierto ? "Abierto" : "Cerrado",
                        UserName = u.Nombre,
                        JavascriptAllowedCommands = javascriptAllowedCommands,
                        FechaFinalizacionSesion = s.FechaFinalizacion,
                        PermisosUsuario = new Dictionary <string, bool>()
                    }
                               ).FirstOrDefault();
                }
                if (session != null)
                {
                    List <Permiso> PermisosUsuario = CachingManager.Instance.GetAllPermisosByIdUsuario(IdUsuario);
                    foreach (KeyValuePair <string, int> kv in mapeoAcciones)
                    {
                        Permiso p = PermisosUsuario.Find(x => x.IdAccion == kv.Value);
                        if (p != null)
                        {
                            var  permisoAccion = Acciones.Find(x => x.IdAccion == kv.Value).HabilitarPermisos;
                            bool habilitado    = (p.Permisos & permisoAccion) != 0;
                            session.PermisosUsuario.Add(kv.Key, habilitado);
                        }
                    }
                    CacheLayer.Add(session, keyCache);
                }
                else
                {
                    session = new M4TraderUserSessionLogin()
                    {
                        Ok      = false,
                        Message = "Sesión Expirada"
                    };
                }
            }
            return(session);
        }