Ejemplo n.º 1
0
        public ResultadoOperacionDto ValidarNumeroAutenticaciones(SeguridadDto objSeguridadDTO, Usuario usuarioDTO)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                var valido = false;
                if (usuarioDTO != null)
                {
                    if (usuarioDTO.IntentosErroneosLogin < Int32.Parse(objSeguridadDTO.NumeroAutentificaciones))
                    {
                        valido = true;
                    }
                }
                resultado.InformacionExtra = valido;
                resultado.Resultado        = valido;
            }
            catch (Exception exception)
            {
                LogUtil.Error(exception);
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }
Ejemplo n.º 2
0
        public ResultadoOperacionDto ObtenerParametrosConfiguracionSeguridad()
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                var seguridad = new SeguridadDto();
                seguridad.ExpresionValidacionPassword = ConfigurationManager.AppSettings["expresionValidacionPassword"];
                seguridad.MensajeValidacion           = ConfigurationManager.AppSettings["mensajeValidacion"];
                seguridad.NumeroAutentificaciones     = ConfigurationManager.AppSettings["numeroAutentificaciones"];
                seguridad.NumeroDiasValidos           = ConfigurationManager.AppSettings["numeroDiasValidos"];
                seguridad.NumeroAutentiticacionesValidasAntesModificacion =
                    ConfigurationManager.AppSettings["numeroAutentiticacionesValidasAntesModificacion"];
                seguridad.NumeroDiasValidosAntesModificacion =
                    ConfigurationManager.AppSettings["numeroDiasValidosAntesModificacion"];
                seguridad.NumeroPasswordCiclo = ConfigurationManager.AppSettings["numeroPasswordCiclo"];
                resultado.Resultado           = true;
                resultado.InformacionExtra    = seguridad;
            }
            catch (Exception exception)
            {
                LogUtil.Error(exception);
                resultado.Resultado        = false;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }
Ejemplo n.º 3
0
        public ResultadoOperacionDto ValidarDiasAutenticaciones(SeguridadDto seguridad, Usuario usuario)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                resultado.InformacionExtra = false;
                var hoy = DateTime.Today;
                if (usuario != null)
                {
                    var fechaLimite = usuario.VigenciaPassword.AddDays(Int32.Parse(seguridad.NumeroDiasValidos));
                    if (hoy < fechaLimite)
                    {
                        resultado.InformacionExtra = true;
                    }
                }
            }
            catch (Exception exception)
            {
                LogUtil.Error(exception);
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }
Ejemplo n.º 4
0
        public async Task RegisterUser(SeguridadDto seguridadDto)
        {
            Seguridad _seguridad = new();
            Usuario   usuario    = new();
            string    password   = Helper.STDFunctions.GenerarContraseña();

            _seguridad.UserName = seguridadDto.Nombres;
            _seguridad.User     = seguridadDto.User;
            _seguridad.Password = _passwordService.Hash(password);
            _seguridad.Activo   = seguridadDto.IsActive;
            _seguridad.Email    = seguridadDto.Email;
            _seguridad.Role     = seguridadDto.Role;

            usuario.Nombres   = seguridadDto.Nombres;
            usuario.Apellidos = seguridadDto.Apellidos;
            usuario.Email     = seguridadDto.Email;
            usuario.IsActive  = true;


            await _unitOfWork.SeguridadRepository.Add(_seguridad).ConfigureAwait(false);

            await _unitOfWork.UsuarioRepository.Add(usuario).ConfigureAwait(false);

            _emailService.Send(seguridadDto.Email, "Password usuario", $"<p>Contraseña: {password} </p>");

            await _unitOfWork.SaveChangesAsync().ConfigureAwait(false);
        }
Ejemplo n.º 5
0
        public ResultadoOperacionDto ModificarPassword(ref Usuario usuarioParam, SeguridadDto objSeguridadDTO,
                                                       string password)
        {
            var resultado = new ResultadoOperacionDto();
            var usuario   = Repository.GetById(usuarioParam.IdUsuario);

            if (usuario != null && usuario.Password != null)
            {
                var passwEncriptado = SeguridadDto.EncriptarPassword(password);
                usuario.Password              = passwEncriptado;
                usuario.VigenciaPassword      = DateTime.Today.AddDays(60);
                usuario.Bloqueado             = false;
                usuario.IntentosErroneosLogin = 0;
                if (!String.IsNullOrEmpty(usuario.HistoricoPassword))
                {
                    var split = new string[1];
                    split[0] = "@@@";
                    var passwAnteriores = usuario.HistoricoPassword.Split(split, StringSplitOptions.None);
                    var queuePasswords  = new Queue <string>(passwAnteriores);
                    while (queuePasswords.Count >= Int32.Parse(objSeguridadDTO.NumeroPasswordCiclo))
                    {
                        queuePasswords.Dequeue(); //Elimina la contraseña mas antigua
                    }
                    queuePasswords.Enqueue(passwEncriptado);
                    usuario.HistoricoPassword = String.Empty;
                    foreach (var queuePassword in queuePasswords)
                    {
                        if (String.IsNullOrWhiteSpace(queuePassword))
                        {
                            continue;
                        }
                        usuario.HistoricoPassword += queuePassword + "@@@";
                    }
                }
                else
                {
                    usuario.HistoricoPassword = passwEncriptado;
                }
                Repository.Update(usuario);
                resultado.Resultado = true;
                resultado.Mensaje   = MensajesServicios.ContraseñaModificada;
                var informacionAuditoria = new InformacionAuditoriaDto
                {
                    Accion    = ConstantsAccionAuditable.Actualizar,
                    Empresa   = null,
                    IdUsuario = usuario.IdUsuario,
                    Modulo    = ConstantsModulo.Login,
                    Registro  = MensajesServicios.ContrasenaModificada
                };
                resultado.InformacionAuditoria = informacionAuditoria;
                return(resultado);
            }
            else
            {
                resultado.Resultado = false;
                resultado.Mensaje   = MensajesServicios.SinDatosUsuario;
            }
            return(resultado);
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> Post(SeguridadDto seguridadDto)
        {
            var seguridad = _mapper.Map <Seguridad>(seguridadDto);
            await _seguridadService.RegisterUser(seguridad);

            seguridadDto = _mapper.Map <SeguridadDto>(seguridad);
            var respose = new ApiResponse <SeguridadDto>(seguridadDto);

            return(Ok(seguridad));
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> Post(SeguridadDto seguridadDto)
        {
            await _seguridadService.RegisterUser(seguridadDto).ConfigureAwait(false);

            ApiResponse <string> response = new ApiResponse <string>()
            {
                Succeeded = true, Message = "Usuario Registrado"
            };

            return(Ok(response));
        }
Ejemplo n.º 8
0
        public ResultadoOperacionDto RegistrarAcceso(Usuario usuarioDto, SeguridadDto seguridad, bool isExitoso)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                var usuario = Repository.ObtenerUsuarioPorId(usuarioDto.IdUsuario);
                if (isExitoso)
                {
                    usuario.IntentosErroneosLogin = 0;
                    resultado.Resultado           = true;
                }
                else
                {
                    usuario.IntentosErroneosLogin = usuario.IntentosErroneosLogin + 1;
                    if (!(bool)ValidarNumeroAutenticaciones(seguridad, usuario).InformacionExtra)
                    {
                        usuario.Bloqueado   = true;
                        resultado.Resultado = false;
                        resultado.Mensaje   = MensajesServicios.IntentosExcedidos;
                    }
                    else
                    {
                        resultado.Resultado = false;
                        resultado.Mensaje   = MensajesServicios.ContrasenaIncorrecta;
                    }
                }
                Repository.GuardarUsuario(usuario);
            }
            catch (Exception exception)
            {
                LogUtil.Error(exception);
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }

            //var informacionAuditoria = new InformacionAuditoriaDto
            //{
            //    Accion = ConstantsAccionAuditable.RegistroAutentificacion,
            //    Empresa = null,
            //    IdUsuario = usuario.IdUsuario,
            //    Modulo = ConstantsModulo.Login,
            //    Registro = MensajesServicios.RegistroAcceso
            //};
            //resultado.InformacionAuditoria = informacionAuditoria;
            return(resultado);
        }
Ejemplo n.º 9
0
        public async Task ValidarUsuario_No_Exitoso()
        {
            var          service    = this.CreateService();
            const string contrasena = "10000.feUzERp1/cWLzjxJD6dl+g==.XSCcROLL98o00jrC7xWbariI4lz1V1plbUECiBdT3Cw=";
            var          usuario    = new SeguridadDto {
                Usuario = "Pepito1", Contrasena = "Master12481*"
            };
            var seguridad = new SeguridadMicroServicio {
                Contrasena = contrasena, Id = 1, Usuario = "Pepito"
            };

            mockContrasenaService.Setup(s => s.Check(contrasena, usuario.Contrasena)).Returns(false);
            mockUnitOfWork.Setup(s => s.SeguridadRepository.ValidarUsuario(usuario)).ReturnsAsync(seguridad);
            var result = await service.ValidarUsuario(usuario);

            Assert.AreEqual(null, result);
            this.mockRepository.VerifyAll();
        }
Ejemplo n.º 10
0
        public IHttpActionResult CambiarContrasena()
        {
            string passwordAnterior         = getFormKeyValue("passwordAnterior");
            string passwordNuevo            = getFormKeyValue("passwordNuevo");
            string passwordConfirmar        = getFormKeyValue("passwordConfirmar");
            ResultadoOperacionDto resultado = new ResultadoOperacionDto();

            if (!string.IsNullOrEmpty(passwordAnterior) && !string.IsNullOrEmpty(passwordNuevo) && !string.IsNullOrEmpty(passwordConfirmar) && SesionActual.Usuario != null)
            {
                SeguridadDto seguridadDto = LoginService.ObtenerParametrosConfiguracionSeguridad().InformacionExtra as SeguridadDto;
                Usuario      usuarioDto   = UsuarioService.ObtenerUsuarioPorId(SesionActual.Usuario.IdUsuario).InformacionExtra as Usuario;

                if ((bool)LoginService.VerificaPasswordEncriptado(usuarioDto, passwordAnterior).InformacionExtra)
                {
                    if ((bool)LoginService.ValidarPasswordContraExpresionRegular(seguridadDto, passwordNuevo).InformacionExtra)
                    {
                        if (!(bool)LoginService.VerificaPasswordYaUsado(usuarioDto, passwordNuevo).InformacionExtra)
                        {
                            LoginService.ModificarPassword(ref usuarioDto, seguridadDto, passwordNuevo);
                            resultado = LoginService.RegistrarAcceso(usuarioDto, seguridadDto, true);
                            if (resultado.Resultado)
                            {
                                resultado.Mensaje = AbaxXbrl.ContraseñaModificada;
                            }
                        }
                        else
                        {
                            resultado.Mensaje          = AbaxXbrl.ContraseñaUsada;
                            resultado.InformacionExtra = seguridadDto.NumeroPasswordCiclo;
                        }
                    }
                    else
                    {
                        resultado.Mensaje = AbaxXbrl.ContraseñaNuevaFormato;
                    }
                }
                else
                {
                    resultado.Mensaje = AbaxXbrl.ContraselaAnteriorNoCoincide;
                }
            }
            return(Ok(resultado));
        }
Ejemplo n.º 11
0
        public ResultadoOperacionDto ValidarPasswordContraExpresionRegular(SeguridadDto objSeguridadDTO, string password)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                var valido = false;
                if (objSeguridadDTO != null && objSeguridadDTO.ExpresionValidacionPassword != null &&
                    !password.Equals(""))
                {
                    valido = Regex.Match(password, objSeguridadDTO.ExpresionValidacionPassword).Success;
                }
                resultado.InformacionExtra = valido;
                resultado.Resultado        = valido;
            }
            catch (Exception exception)
            {
                LogUtil.Error(exception);
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }
Ejemplo n.º 12
0
        public IHttpActionResult CambioPassword()
        {
            ResultadoOperacionDto resultado = new ResultadoOperacionDto();
            long   idUsuario         = Convert.ToInt64(getFormKeyValue("idUsuario"));
            string passwordAnterior  = getFormKeyValue("passwordAnterior");
            string passwordNuevo     = getFormKeyValue("passwordNuevo");
            string passwordConfirmar = getFormKeyValue("passwordConfirmar");

            try
            {
                if (!string.IsNullOrEmpty(passwordAnterior) && !string.IsNullOrEmpty(passwordNuevo) && !string.IsNullOrEmpty(passwordConfirmar) && Convert.ToInt64(idUsuario) > 0)
                {
                    SeguridadDto seguridadDto = LoginService.ObtenerParametrosConfiguracionSeguridad().InformacionExtra as SeguridadDto;
                    Usuario      usuarioDto   = UsuarioService.ObtenerUsuarioPorId(idUsuario).InformacionExtra as Usuario;

                    if ((bool)LoginService.VerificaPasswordEncriptado(usuarioDto, passwordAnterior).InformacionExtra)
                    {
                        if ((bool)LoginService.ValidarPasswordContraExpresionRegular(seguridadDto, passwordNuevo).InformacionExtra)
                        {
                            if (!(bool)LoginService.VerificaPasswordYaUsado(usuarioDto, passwordNuevo).InformacionExtra)
                            {
                                LoginService.ModificarPassword(ref usuarioDto, seguridadDto, passwordNuevo);
                                resultado = LoginService.RegistrarAcceso(usuarioDto, seguridadDto, true);
                                if (resultado.Resultado)
                                {
                                    var empresas = UsuarioService.ObtenerEmpresasPorIdEmpresaIdUsuario(null,
                                                                                                       usuarioDto.IdUsuario).InformacionExtra as List <UsuarioEmpresa>;
                                    Session sesion = new Session();

                                    switch (empresas.Count)
                                    {
                                    case 0:
                                        resultado.Resultado = false;
                                        resultado.Mensaje   = "MENSAJE_ERROR_AUTENTICAR_USUARIO_SIN_EMISORA";
                                        break;

                                    case 1:
                                        var usuarioEmpresa = empresas.First();
                                        sesion.IdEmpresa    = usuarioEmpresa.IdEmpresa;
                                        sesion.GrupoEmpresa = usuarioEmpresa.Empresa.GrupoEmpresa;

                                        var entidades  = UsuarioService.CargarFacultades(usuarioDto.IdUsuario, usuarioEmpresa.IdEmpresa).InformacionExtra as List <Facultad>;
                                        var facultades = CopiadoUtil.Copia(entidades);
                                        sesion.Facultades          = facultades.ToList();
                                        resultado.Mensaje          = string.Empty;
                                        resultado.InformacionExtra = sesion;

                                        LoginService.RegistrarAccesoAuditoria(usuarioDto.IdUsuario, sesion.IdEmpresa);

                                        break;

                                    default:
                                        resultado.Mensaje = "EmisoraLogin";
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                resultado.Mensaje          = AbaxXbrl.ContraseñaUsada;
                                resultado.InformacionExtra = seguridadDto.NumeroPasswordCiclo;
                            }
                        }
                        else
                        {
                            resultado.Mensaje = AbaxXbrl.ContraseñaNuevaFormato;
                        }
                    }
                    else
                    {
                        resultado.Mensaje = AbaxXbrl.ContraselaAnteriorNoCoincide;
                    }
                }
            }
            catch (Exception ex)
            {
                resultado.Mensaje          = ex.Message;
                resultado.InformacionExtra = ex;
                resultado.Resultado        = false;
            }
            return(Ok(resultado));
        }