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); }
private static UserValido ValidateUser(string UserName, string Password, InfoCliente infoCliente, TipoAplicacion tipoAplicacion, string NombreAgencia = null, bool passHashed = false, bool isValid = false) { var configuracionSeguridad = CachingManager.Instance.GetConfiguracionSeguridad(); Guid tokenGuid; UserValido response = new UserValido(); response.IsOK = false; try { if (string.IsNullOrEmpty(UserName) || string.IsNullOrEmpty(Password)) { response.MensajeError = "El nombre de usuario y la contraseña no pueden estar vacíos."; response.IsOK = false; return(response); } tokenGuid = DoLogIn(UserName, Password, infoCliente, tipoAplicacion, NombreAgencia, passHashed, isValid); if (tokenGuid != Guid.Empty) { response.IsOK = true; response.TokenGuid = tokenGuid.ToString(); int IdUsuario = CachingManager.Instance.GetUsuarioByUsername(UserName).IdUsuario; DTOPortfolio portfolioPorDefecto = CachingManager.Instance.GetPortfolioDefaultByIdUsuario(IdUsuario); if (portfolioPorDefecto == null) { response.MensajeError = "El Usuario debe tener al menos un portfolio por defecto!."; response.IsOK = false; return(response); } } else { response.MensajeError = "Verifique el nombre de usuario y contraseña."; response.IsOK = false; } } catch (M4TraderApplicationException ex) { if (ex.Codigo == "W100002") { response.MensajeError = "Por políticas de seguridad debe cambiar la contraseña."; response.IsOK = false; response.NeedNewPassword = true; return(response); } else { response.MensajeError = ex.Message; response.IsOK = false; } } catch (SessionException ex) { if (ex.Code == "W100002") { response.NeedNewPassword = true; response.MensajeError = "Por políticas de seguridad debe cambiar la contraseña."; response.IsOK = false; return(response); } else { response.MensajeError = ex.Message; response.IsOK = false; } } catch (Exception ex) { response.MensajeError = ex.Message; response.IsOK = false; } return(response); }