public ResultadoOperacionDto VerificaPasswordEncriptado(Usuario usuarioDTO, string password)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                var valido = false;
                if (usuarioDTO != null && !String.IsNullOrEmpty(usuarioDTO.Password))
                {
                    var salt =
                        usuarioDTO.Password.Substring(usuarioDTO.Password.Length -
                                                      PasswordHashGenerator.TAMANIO_B64_NUMERO_SALT);
                    var hashedPassword = PasswordHashGenerator.CreatePasswordHash(password, salt);

                    valido = hashedPassword.Equals(usuarioDTO.Password);
                }
                resultado.InformacionExtra = valido;
                resultado.Resultado        = valido;
            }
            catch (Exception exception)
            {
                LogUtil.Error(exception);
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }
        public bool VerificaPasswordEncriptado(Usuario usuario, string password)
        {
            var valido = false;

            if (usuario != null && !String.IsNullOrEmpty(usuario.Password))
            {
                var salt =
                    usuario.Password.Substring(usuario.Password.Length - PasswordHashGenerator.TAMANIO_B64_NUMERO_SALT);
                var hashedPassword = PasswordHashGenerator.CreatePasswordHash(password, salt);

                valido = hashedPassword.Equals(usuario.Password);
            }

            return(valido);
        }
        public bool EnvioCorreoOlvidoContrasena(long idUsuario, string url)
        {
            Usuario usuario        = GetById(idUsuario);
            var     pass           = PasswordHashGenerator.GenerarPassword();
            var     salt           = pass.Substring(pass.Length - PasswordHashGenerator.TAMANIO_B64_NUMERO_SALT);
            var     hashedPassword = PasswordHashGenerator.CreatePasswordHash(pass, salt);

            usuario.Password              = hashedPassword;
            usuario.Bloqueado             = false;
            usuario.IntentosErroneosLogin = 0;
            usuario.VigenciaPassword      = DateTime.Today.AddDays(-1);

            Update(usuario);
            var usuarioMail = new UsuarioMailDto
            {
                Nombre            = usuario.Nombre + " " + usuario.ApellidoPaterno + " " + usuario.ApellidoMaterno,
                CorreoElectronico = usuario.CorreoElectronico,
                Password          = pass
            };
            var html = TemplateMail.GenerateHtmlCorreoUsuario(usuarioMail, url);
            var logo = TemplateMail.GeneraLogoAbaxAttachment();

            return(MailUtil.EnviarEmail(usuario.CorreoElectronico, "Envio de Nueva Contraseña", html, logo));
        }
        /// <summary>
        /// Genera la cadena encriptada
        /// </summary>
        /// <param name="password"></param>
        /// <returns></returns>
        public static String EncriptarPassword(String password)
        {
            string salt = PasswordHashGenerator.CreateSalt(PasswordHashGenerator.TAMANIO_NUMERO_SALT);

            return(PasswordHashGenerator.CreatePasswordHash(password, salt));
        }
        public ResultadoOperacionDto GuardarUsuario(Usuario usuario, long idUsuarioExec, String url, String correoElectronico)
        {
            var esLoginActiveDirectory = bool.Parse(ConfigurationManager.AppSettings.Get("LoginActiveDirectory"));

            var resultado = new ResultadoOperacionDto();

            try
            {
                bool envio = false;
                var  pass  = String.Empty;
                if (usuario.IdUsuario == 0)
                {
                    usuario.Activo = true;

                    if (esLoginActiveDirectory)
                    {
                        usuario.VigenciaPassword = DateTime.Now.AddYears(50);
                    }
                    else
                    {
                        usuario.VigenciaPassword = DateTime.Now.AddDays(-1);
                    }

                    usuario.Bloqueado             = false;
                    usuario.HistoricoPassword     = String.Empty;
                    usuario.IntentosErroneosLogin = 0;
                    pass             = UtilAbax.GenerarCodigo();
                    usuario.Password = pass;
                    var salt =
                        usuario.Password.Substring(usuario.Password.Length -
                                                   PasswordHashGenerator.TAMANIO_B64_NUMERO_SALT);
                    usuario.Password = PasswordHashGenerator.CreatePasswordHash(usuario.Password, salt);
                    envio            = true;
                }

                var param = new List <object>()
                {
                    usuario.CorreoElectronico
                };
                var informacionAuditoria = new InformacionAuditoriaDto(idUsuarioExec,
                                                                       usuario.IdUsuario == 0 ? ConstantsAccionAuditable.Insertar : ConstantsAccionAuditable.Actualizar,
                                                                       ConstantsModulo.Usuarios,
                                                                       usuario.IdUsuario == 0 ? MensajesServicios.InsertarUsuario : MensajesServicios.Actualizarusuario,
                                                                       param);
                resultado = Repository.GuardarUsuario(usuario);
                resultado.InformacionAuditoria = informacionAuditoria;



                if (resultado.Resultado && envio && (!esLoginActiveDirectory || UtilAbax.esCorreoValido(usuario.CorreoElectronico)))
                {
                    Repository.EnvioCorreoRegistro(usuario, pass, url);
                }
                else if (resultado.Resultado && envio && esLoginActiveDirectory && correoElectronico != null)
                {
                    Repository.EnvioCorreoRegistroLDAP(usuario, url, correoElectronico);
                }
            }
            catch (Exception exception)
            {
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }