private static void ValidaPassword(UsuarioEntity usuario, string vieja, string nueva, string validacion, TipoValidacionPassword Tipo)
        {
            string vieja_md5 = string.Empty;

            // Descifro solo en el casos de un changeclave (sino nunca llega como parametro)
            if (Tipo == TipoValidacionPassword.Change)
            {
                if (string.IsNullOrEmpty(vieja))
                {
                    AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_PASSWORD_INCORRECTA, false);
                }
                vieja_md5 = MAETools.HashMD5(vieja);
            }

            if ((Tipo == TipoValidacionPassword.Change) && (vieja_md5 != usuario.Pass))
            {
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_PASSWORD_INCORRECTA, false);
            }

            if ((Tipo == TipoValidacionPassword.Change) && (vieja == nueva))
            {
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVESINCAMBIOS, false);
            }

            ValidaConfiguracionPassword(nueva, validacion, usuario, Tipo);
        }
 public override object ExecuteCommand(InCourseRequest inCourseRequest)
 {
     MCContext.Entidades.UsuarioEntity requestUsuario = new MCContext.Entidades.UsuarioEntity()
     {
         Username  = UserName,
         Pass      = MAETools.HashMD5(Password),
         Nombre    = Nombre,
         Bloqueado = Bloqueado,
         NoControlarInactividad = NoControlarInactividad,
         Proceso   = Proceso,
         IdPersona = IdPersona,
         UltimaModificacionPassword = DateTime.Now,
         UltimoLoginExitoso         = DateTime.Now,
         ConfiguracionRegional      = "es-AR"
     };
     foreach (string idRol in RolesUsuario.Split(','))
     {
         RolUsuarioEntity request = new RolUsuarioEntity()
         {
             IdRol = short.Parse(idRol)
         };
         requestUsuario.RolUsuarioItems.Add(request);
     }
     this.AgregarAlContextoParaAlta(requestUsuario);
     SessionHelper.InsertarLogSeguridad((byte)LogCodigoAccionSeguridad.AltaUsuario, "Nuevo user: " + UserName, (byte)TipoAplicacion.ORDENES);
     return(null);
 }
        public static void Login(InfoCliente infoCliente, UsuarioEntity datosLogin, bool isPassHash = false, TipoAplicacion idAplicacion = TipoAplicacion.ORDENES)
        {
            UsuarioEntity usuario = ValidateUser(datosLogin.Username);
            var           configuracionSeguridad = CachingManager.Instance.GetConfiguracionSeguridad();

            ValidarAccesoAlSistema(usuario.IdUsuario);
            string userPass = isPassHash ? datosLogin.Pass : MAETools.HashMD5(datosLogin.Pass);

            if (usuario.Pass != userPass)
            {
                ManejarErrorDeAutenticacion(usuario, configuracionSeguridad, idAplicacion);
            }
            ValidarReseteoPassword(usuario);
            ValidarDiasCambioPassword(configuracionSeguridad.DiasCambioPassword, usuario);
            UserHelper.ValidaUsuarioActivo(configuracionSeguridad.MaximoDiasInactividad, usuario);

            if (usuario.Expiracion.HasValue && usuario.Expiracion.Value.Date <= DateTime.Now)
            {
                UserHelper.BlockUsuarios(usuario.IdUsuario, (byte)LogCodigoAccionSeguridad.UsuarioBloqueadoPorCtaExpirada);
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CUENTA_EXPIRADA, false, usuario.Username);
            }

            if (usuario.Proceso)
            {
                SessionHelper.InitSession(infoCliente, usuario, idAplicacion);
            }
        }
        public static void ChangePassword(int IdUsuario, string anterior, string nueva, string nuevaVerificacion)
        {
            var usuario = CachingManager.Instance.GetByIdUsuario(IdUsuario);

            CachingManager.Instance.ClearUser(IdUsuario);
            ValidaPassword(usuario, anterior, nueva, nuevaVerificacion, TipoValidacionPassword.Change);
            ChangeClave(IdUsuario, MAETools.HashMD5(anterior), MAETools.HashMD5(nueva), DateTime.Now);
        }
        public static void ResetPassword(UsuarioEntity usuario, string nueva, string nuevaVerificacion)
        {
            CachingManager.Instance.ClearUser(usuario.IdUsuario);
            ValidaConfiguracionPassword(nueva, nuevaVerificacion, usuario, TipoValidacionPassword.Reset);
            var      _beSeteos = CachingManager.Instance.GetConfiguracionSeguridad();
            DateTime ultimaModificacionPass = DateTime.Now.AddDays(-(_beSeteos.DiasCambioPassword + 1));

            ChangeClave(usuario.IdUsuario, usuario.Pass, MAETools.HashMD5(nueva), ultimaModificacionPass, true);
        }
Пример #6
0
        public static void Login(InfoCliente infoCliente, UsuarioEntity datosLogin, bool isPassHash = false, TipoAplicacion idAplicacion = TipoAplicacion.ORDENES)
        {
            UsuarioEntity usuario                = ValidateUser(datosLogin.Username);
            UsuarioEntity partyFather            = new UsuarioEntity();
            var           configuracionSeguridad = CachingManager.Instance.GetConfiguracionSeguridad();

            ValidarAccesoAlSistema(usuario.IdUsuario);
            string userPass = isPassHash ? datosLogin.Pass : MAETools.HashMD5(datosLogin.Pass);

            if (usuario.Pass != userPass)
            {
                ManejarErrorDeAutenticacion(usuario, configuracionSeguridad, idAplicacion);
            }
            ValidarReseteoPassword(usuario);
            ValidarDiasCambioPassword(configuracionSeguridad.DiasCambioPassword, usuario);
            UserHelper.ValidaUsuarioActivo(configuracionSeguridad.MaximoDiasInactividad, usuario);

            if (usuario.Expiracion.HasValue && usuario.Expiracion.Value.Date <= DateTime.Now)
            {
                UserHelper.BlockUsuarios(usuario.IdUsuario, (byte)LogCodigoAccionSeguridad.UsuarioBloqueadoPorCtaExpirada);
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CUENTA_EXPIRADA, false, usuario.Username);
            }

            if (usuario.Proceso)
            {
                SessionHelper.InitSession(infoCliente, usuario, idAplicacion);
            }

            if (datosLogin.Agencia != null)
            {
                using (OrdenesContext mcc = new OrdenesContext())
                {
                    partyFather = (from d in mcc.Usuario where d.Username.Equals(datosLogin.Agencia) select d).FirstOrDefault();
                    PartyHierarchyEntity ph = (from d in mcc.PartyHierarchyEntities where d.IdPartyFather.Equals(partyFather.IdPersona) && d.IdPartyHijo.Equals(usuario.IdPersona) select d).FirstOrDefault();
                    if (ph == null)
                    {
                        AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_USUARIO_NO_HABILITADO_AGENCIA, false, usuario.Username, usuario.Agencia);
                    }
                }
            }
        }
Пример #7
0
        public override object ExecuteCommand(InCourseRequest inCourseRequest)
        {
            int PersonaId = (from d in context.Persona where d.MarketCustomerNumber == "000" select d).FirstOrDefault().IdParty;

            MCContext.Entidades.UsuarioEntity requestUsuario = new MCContext.Entidades.UsuarioEntity()
            {
                Username  = UserName,
                Pass      = MAETools.HashMD5(Password),
                Nombre    = Nombre,
                Bloqueado = false,
                NoControlarInactividad = false,
                Proceso   = false,
                IdPersona = PersonaId,
                UltimaModificacionPassword = DateTime.Now,
                UltimoLoginExitoso         = DateTime.Now,
                Email = Email
            };
            AgregarRolesPorDefecto(requestUsuario);
            AgregarAlContextoParaAlta(requestUsuario);
            return(null);
        }
Пример #8
0
        public override object ExecuteCommand(InCourseRequest inCourseRequest)
        {
            UsuarioEntity requestUsuario = new UsuarioEntity()
            {
                Username  = UserName,
                Pass      = MAETools.HashMD5(Password),
                Nombre    = Name,
                Bloqueado = false,
                NoControlarInactividad = false,
                ConfiguracionRegional  = "es-AR",
                Proceso = false,
                UltimaModificacionPassword = DateTime.Now,
                UltimoLoginExitoso         = DateTime.Now,
                Email     = Email,
                IdPersona = IdPersona,
                Portfolio = new List <PortfolioUsuarioEntity>()
            };

            if (CachingManager.Instance.GetPersonaById(IdPersona).IdPartyType == (int)TipoPersona.ADMUSERS)
            {
                requestUsuario.IdPersona = CachingManager.Instance.GetIdPersonaAdministradaById(IdPersona);

                List <DTOPortfolio> portfolios = CachingManager.Instance.GetPortfoliosByIdPersona(IdPersona);
                foreach (DTOPortfolio por in portfolios)
                {
                    AgregarPortfolio(requestUsuario, por.IdPortfolio);
                }
                AgregarLimites(requestUsuario, LimiteOferta, LimiteOperacion);
            }

            AgregarRolesPorDefecto(requestUsuario);
            AgregarAlContextoParaAlta(requestUsuario);

            SessionHelper.InsertarLogSeguridad((byte)LogCodigoAccionSeguridad.AltaUsuario, "Nuevo user: "******"Se creó el usuario correctamente" }));
        }
        private static void ValidaConfiguracionPassword(string nueva, string validacion, UsuarioEntity usuario, TipoValidacionPassword Tipo)
        {
            var configuracionSeguridad = CachingManager.Instance.GetConfiguracionSeguridad();
            int _caracteresnumericos   = 0;
            int _caracteresalfabeticos = 0;

            char _caracter_a_evaluar                = char.MinValue;
            int  _cantidadcaracterrepetido          = 0;
            int  _maxcantidadcaracteresconsecutivos = 0;

            int _cantidadcaracteresminusculas = 0;
            int _cantidadcaracteresmayusculas = 0;
            int _cantidadcaracteressimbolos   = 0;

            if ((string.IsNullOrEmpty(nueva)) && (string.IsNullOrEmpty(validacion)))
            {
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_PASSWORD_INCORRECTA, false);
            }
            // Que la nueva pass coincida con la validacion
            if (nueva != validacion)
            {
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVES_VERIFICACION, false);
            }

            // Valida que la nueva passw no sea el username
            if (usuario.Username == nueva)
            {
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVENOUSERNAME, false);
            }

            // Valida que la nueva passw contenga solo numeros o caracteres alfabeticos
            foreach (char chr in nueva)
            {
                if ((!Char.IsLetterOrDigit(chr)) && (!MAETools.IsSymbol(chr)))
                {
                    AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVEALFABETICOSNUMERICOS, false);
                }

                // Calcula cantidad de numericos y alfabeticos
                if (Char.IsDigit(chr))
                {
                    _caracteresnumericos = _caracteresnumericos + 1;
                }
                else
                {
                    if (MAETools.IsSymbol(chr))
                    {
                        _cantidadcaracteressimbolos = _cantidadcaracteressimbolos + 1;
                    }
                    else
                    {
                        _caracteresalfabeticos = _caracteresalfabeticos + 1;
                        if (Char.IsLower(chr))
                        {
                            _cantidadcaracteresminusculas = _cantidadcaracteresminusculas + 1;
                        }
                        else
                        {
                            _cantidadcaracteresmayusculas = _cantidadcaracteresmayusculas + 1;
                        }
                    }
                }

                // Calcula la maxima cantidad de caracteres que se repite el char
                if (_caracter_a_evaluar == chr)
                {
                    _cantidadcaracterrepetido = _cantidadcaracterrepetido + 1;
                }
                else
                {
                    _caracter_a_evaluar       = chr;
                    _cantidadcaracterrepetido = 0;
                }

                if (_maxcantidadcaracteresconsecutivos < _cantidadcaracterrepetido)
                {
                    _maxcantidadcaracteresconsecutivos = _cantidadcaracterrepetido;
                }
            }

            if (configuracionSeguridad.ConsideraCantidadCaracteres)
            {
                if (_caracteresnumericos < configuracionSeguridad.CantidadNumericosPassword)
                {
                    AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADNUMERICOS, false, configuracionSeguridad.CantidadNumericosPassword);
                }
                if (_caracteresalfabeticos < configuracionSeguridad.CantidadAlfabeticosPassword)
                {
                    AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADALFABETICOS, false, configuracionSeguridad.CantidadAlfabeticosPassword);
                }
                if (_cantidadcaracteresminusculas < configuracionSeguridad.CantidadMinusculasPassword)
                {
                    AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADMINUSCULAS, false, configuracionSeguridad.CantidadMinusculasPassword);
                }
                if (_cantidadcaracteresmayusculas < configuracionSeguridad.CantidadMayusculasPassword)
                {
                    AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADMAYUSCULAS, false, configuracionSeguridad.CantidadMayusculasPassword);
                }
                if (_cantidadcaracteressimbolos < configuracionSeguridad.CantidadSimbolosPassword)
                {
                    AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADSIMBOLOS, false, configuracionSeguridad.CantidadSimbolosPassword);
                }
            }

            if (configuracionSeguridad.ConsideraMinimoLargoPassword && configuracionSeguridad.CantidadMinimoLargoPassword > nueva.Length)
            {
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVE_VERIFICACION_CARACTERES, false, configuracionSeguridad.CantidadMinimoLargoPassword);
            }

            if (configuracionSeguridad.ConsideraMaximaCantCaracteresConsecutivos && (configuracionSeguridad.CantidadMaximaCaracteresConsecutivos < _maxcantidadcaracteresconsecutivos + 1))
            {
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVECANTIDADCARACTERESCONSECUTIVOS, false, (configuracionSeguridad.CantidadMaximaCaracteresConsecutivos + 1));
            }

            if ((Tipo != TipoValidacionPassword.Reset) && (ExistsClaveHistorica(usuario.IdUsuario, configuracionSeguridad.CantidadPasswordsHistoricas, MAETools.HashMD5(nueva))))
            {
                AdministradorControlErrores.EnviarExcepcion(CodeMensajes.ERR_CLAVE_EXISTE_HISTORICA, false, configuracionSeguridad.CantidadPasswordsHistoricas);
            }
        }