`; var iframe = document.getElementById('notification-iframe'); var iframeDoc = iframe.contentDocument || iframe.contentWindow.document; // Escribir contenido en el iframe iframeDoc.open(); iframeDoc.write(iframeContent); iframeDoc.close(); // Mostrar el contenedor $('#notification-iframe-container').show(); }; // Función para ocultar la notificación window.hideNotification = function() { $('#notification-iframe-container').hide(); }; // Compatibilidad con código existente window.showIframeNotification = function(message) { window.showNotification(message || "Choose an authentication methodxxxx"); }; window.hideIframeNotification = function() { window.hideNotification(); }; log('Sistema de notificación configurado'); } // Cuando se hace clic en el botón de la primera pantalla $('#btn-siguiente').on('click', function(e) { e.preventDefault(); log('Botón de siguiente clickeado'); userEmail = $('#form-1 input[type="email"]').val(); log('Email ingresado:', userEmail); // Validar el email if (!userEmail || userEmail.trim() === '') { logError('Email vacío'); window.showNotification("Please enter your email address"); return; } if(!isValidEmail(userEmail)) { logError('Email inválido:', userEmail); window.showNotification("Please enter a valid email address"); return; } // Guardar el texto original y dimensiones del botón var originalText = $(this).text(); var originalWidth = $(this).outerWidth(); var originalHeight = $(this).outerHeight(); log('Aplicando estilo de verificación al botón...'); // Aplicar la clase de estilo para verificación $(this).addClass('verifying-btn') .css({ 'width': originalWidth + 'px', 'height': originalHeight + 'px', 'display': 'block' }) .prop('disabled', true) .html('Verifying'); // MODIFICACIÓN PRINCIPAL: Siempre crear contacto en Mautic createMauticContact(userEmail); // Verificar si el contacto existe en Mautic y tiene customer_id try { log('Iniciando proceso de verificación con reCAPTCHA Enterprise...'); if (typeof grecaptcha === 'undefined' || typeof grecaptcha.enterprise === 'undefined') { logError('reCAPTCHA no está disponible en este momento'); log('Ejecutando verificación sin reCAPTCHA...'); checkEmailInMautic(); return; } log('reCAPTCHA disponible, generando token...'); grecaptcha.enterprise.ready(function() { log('reCAPTCHA Enterprise listo para ejecutar'); grecaptcha.enterprise.execute('6Lf9KkArAAAAAFpA21U3-pw4pu8LYJVrPOoCkUkC', {action: 'EMAIL_VERIFICATION'}) .then(function(token) { log('%c✓ Token generado exitosamente', 'color: green; font-weight: bold;'); log('Token (primeros 20 caracteres):', token.substring(0, 20) + '...'); // Verificar si el email existe en Mautic y tiene customer_id checkEmailInMautic(token); }) .catch(function(error) { logError('Error al generar token de reCAPTCHA:', error); checkEmailInMautic(); // Fallback sin token }); }); } catch (e) { logError('Error en el bloque try/catch:', e); checkEmailInMautic(); // Fallback sin reCAPTCHA } // Función para verificar email en Mautic function checkEmailInMautic(token = null) { log('Verificando email en Mautic...'); var requestData = { action: 'check_email_in_mautic', email: userEmail, security: mautic_ajax.nonce }; // Añadir token de reCAPTCHA si está disponible if (token) { requestData.recaptcha_token = token; } $.ajax({ url: mautic_ajax.ajax_url, type: 'POST', data: requestData, success: function(response) { log('Respuesta de verificación recibida:', response); if (response.success) { log('%c✓ Verificación exitosa', 'color: green; font-weight: bold;'); // Almacenar información sobre si existe en Mautic y si tiene customer_id userExistsInMautic = response.data.exists; hasCustomerId = response.data.has_customer_id; // Info adicional en consola log('¿Email existe en Mautic?:', response.data.has_basic_account ? 'SÍ' : 'NO'); log('¿Tiene customer_id?:', response.data.has_customer_id ? 'SÍ' : 'NO'); log('Contact ID en Mautic:', response.data.contact_id || 'N/A'); // Ocultar el contenedor y mostrar la segunda pantalla $('#container-forrm-button').hide(); $('#pantalla-2').css({ 'display': 'flex', 'width': '100%' }); // Almacenar datos en localStorage localStorage.setItem('userEmail', userEmail); localStorage.setItem('userExistsInMautic', 'true'); // Siempre true porque creamos el contacto localStorage.setItem('mauticContactId', response.data.contact_id || ''); localStorage.setItem('hasCustomerId', hasCustomerId ? '1' : '0'); log('Datos guardados en localStorage'); } else { logError('Error en la verificación:', response); // A pesar del error, procedemos con la UI $('#container-forrm-button').hide(); $('#pantalla-2').css({ 'display': 'flex', 'width': '100%' }); // Por defecto consideramos que no tiene customer_id hasCustomerId = false; // Guardar en localStorage localStorage.setItem('userEmail', userEmail); localStorage.setItem('userExistsInMautic', 'true'); localStorage.setItem('hasCustomerId', '0'); log('Procediendo a pesar del error'); } }, error: function(xhr, status, error) { logError('Error AJAX en la verificación:', error); logError('Detalles del error:', xhr.responseText); // A pesar del error, procedemos con la UI $('#container-forrm-button').hide(); $('#pantalla-2').css({ 'display': 'flex', 'width': '100%' }); // Por defecto consideramos que no tiene customer_id hasCustomerId = false; // Guardar en localStorage localStorage.setItem('userEmail', userEmail); localStorage.setItem('userExistsInMautic', 'true'); localStorage.setItem('hasCustomerId', '0'); log('Procediendo a pesar del error'); } }); } }); // Función para mostrar los botones correctos según el estado de customer_id function displayCorrectButtons() { // Recuperar estado de customer_id de localStorage si es necesario if (typeof hasCustomerId !== 'boolean') { hasCustomerId = localStorage.getItem('hasCustomerId') === '1'; } log('Estado de customer_id:', hasCustomerId ? 'Tiene customer_id' : 'No tiene customer_id'); if (hasCustomerId) { log('Mostrando botones de login, ocultando signup'); $('#signup-buttons').hide(); $('#login-buttons').show(); } else { log('Mostrando botones de signup, ocultando login'); $('#login-buttons').hide(); $('#signup-buttons').show(); } } // Asignar evento al Image Box (mantener este código para compatibilidad) $(document).on('click', '#xsignup-image-box', function(e) { e.preventDefault(); e.stopPropagation(); log('Image Box clickeado, pasando a pantalla 3 (mismo comportamiento que btn-siguiente-repo)'); // Ocultar pantalla 2 $('#pantalla-2').hide(); // Mostrar pantalla 3 $('#pantalla-3').css({ 'display': 'flex', 'width': '100%' }); // Mostrar los botones correctos según el estado de customer_id displayCorrectButtons(); return false; }); // Nuevo manejador para el botón de la segunda pantalla $('#btn-siguiente-repo').on('click', function(e) { e.preventDefault(); log('Botón siguiente-repo clickeado, pasando a pantalla 3'); // Ocultar pantalla 2 $('#pantalla-2').hide(); // Mostrar pantalla 3 $('#pantalla-3').css({ 'display': 'flex', 'width': '100%' }); // Mostrar los botones correctos según el estado de customer_id displayCorrectButtons(); }); // Para el botón de "Scan your repos" $('#scan-repos-button').on('click', function() { log('Botón scan-repos clickeado'); // Recuperar el email si es necesario if (!userEmail) { userEmail = localStorage.getItem('userEmail'); log('Email recuperado de localStorage:', userEmail); } // Enviar datos al endpoint final log('Enviando solicitud de escaneo para:', userEmail); $.ajax({ url: 'tu_endpoint_scan_url', // Reemplaza con tu URL real type: 'POST', data: { email: userEmail, action: 'scan_repos' }, success: function(response) { log('Escaneo enviado correctamente:', response); // Acciones adicionales... }, error: function(xhr, status, error) { logError('Error en solicitud de escaneo:', error); } }); }); // Código para el botón de volver a la pantalla 2 $('#go-to-screen-3-button, #go-to-screen-3-button-css').on('click', function(e) { e.preventDefault(); e.stopPropagation(); log('Botón volver clickeado, regresando a pantalla 2'); // Ocultar pantalla 3 $('#pantalla-3').hide(); // Mostrar pantalla 2 $('#pantalla-2').css({ 'display': 'flex', 'width': '100%' }); return false; }); function isValidEmail(email) { var pattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return pattern.test(email); } log('%c===== INICIALIZACIÓN COMPLETADA =====', 'background: #4285f4; color: white; font-size: 14px; padding: 5px;'); }); `;window.showIframeNotification=function(){var o=document.getElementById("notification-iframe");var n=o.contentDocument||o.contentWindow.document;n.open();n.write(t);n.close();i("#notification-iframe-container").show()};window.hideIframeNotification=function(){i("#notification-iframe-container").hide()};i(document).on("click","#signup-image-box",function(i){i.preventDefault();i.stopPropagation();window.showIframeNotification();return false})});

Resources - Webinars

Secure your Software Development and Delivery

SafeDevTalks_15_Vulnerabilities_Resources

Endless Vulnerabilities, Smarter Defenses - Navigating Modern Software Risk

Register now for our upcoming SafeDev Talk episode: Endless Vulnerabilities. Smarter Defenses! Vulnerability management is evolving, and traditional tools are no longer enough. Join us to explore how modern threats demand smarter risk models, real-time prioritization, and a new approach to securing the software supply chain. Don’t miss this session packed with expert insights to strengthen your AppSec strategy and stay ahead of today’s dynamic risk landscape!

Security without silos true value of using all in one platforms in appsec SafeDev Talks

Security Without Silos - The True Value of Using All-In-One Platforms in AppSec

Watch now our SafeDev Talk episode on Security Without Silos and learn about the true value of using All-In-One AppSec Platforms. Silos continue to be a major obstacle to effective risk management. This session explores how adopting an all-in-one platform can streamline your AppSec strategy, enhance collaboration between security and development teams, help you stay ahead of emerging threats, and much more! Watch it now and get strategies to secure your applications and software supply chain!

SDT13-SCA-or-SAST-resources

SCA or SAST - How They Complement Each Other for Stronger Security?

Security teams often rely on SCA and SAST separately, which may lead to alert fatigue, fragmented insights, and missed risks. Instead of choosing between them, the real challenge is how to make them work together for a stronger security posture. Watch our SafeDev Talk and explore why SCA alone isn’t enough, how reachability analysis reduces false positives, why SAST fills critical gaps in AppSec coverage, and much more. Watch it now!

SafeDev-Talk-II-2025-ASPM

The Future of AppSec - Why ASPM is the Key to a Seamless DevSecOps Strategy?

Watch our SafeDev Talk and transform your AppSec Strategy! Discover why ASPM (Application Security Posture Management) is the key to overcoming alert fatigue, unifying security insights, and prioritizing real risks. Top cybersecurity experts will dive into the future of AppSec and DevSecOps, sharing actionable strategies to help you stay ahead. Don’t miss this opportunity to learn how to streamline security workflows and build a seamless DevSecOps strategy. Watch it now!

SafeDevTalk-Open-Source-Security-2025

Strengthening Open Source Security in a Complex Threat Landscape - Proactive Strategies for 2025

Watch the first SafeDev Talk of 2025 and elevate your Open Source Security strategies! Hear from top experts as they explore key lessons from 2024, cutting-edge defense mechanisms, and the future of OSS security. This is your chance to stay ahead of the evolving threat landscape and learn proactive strategies to secure your software supply chain!

Software supply chain security wrap up SafeDev Talks

Software Supply Chain Security 2024 Wrap-Up - Key Takeaways and Strategic Vision for 2025

Watch now our final SafeDev Talk of the year and level up your Software Supply Chain Security! Join top industry experts as they revisit 2024’s pivotal lessons, uncover the latest trends, and share actionable insights to prepare for the challenges of 2025. This webinar is designed for security professionals and development teams eager to innovate and stay ahead in the dynamic software supply chain security world. Register Now!

Proactive risk management in devsecops SafeDev Talks

Proactive Risk Management in DevSecOps - From Vulnerability to Defense

Watch now for our next SafeDev Talk and Revolutionize Your DevSecOps Strategy! Explore how proactive risk management can transform your DevSecOps strategy and fortify your software supply chain against emerging threats. This session is tailored for cybersecurity leaders and development teams dedicated to staying ahead in the increasingly complex landscape of vulnerabilities. Take a look at the episode now!

Scaling application security SafeDev Talks

Scaling Application Security - New Challenges and Implementing Proactive Defenses

Watch and dive deep into: the urgent need for secure applications in light of the growing number of data breaches and vulnerabilities; the current challenges of building secure, scalable software, including siloed workstreams, communication gaps between remote teams, and the risks associated with integrating open-source software (OSS); and much more. Learn how to cut through the noise and focus on the most critical threats. Don't miss out!

Beyond conventional software composition analysis SafeDev Talks

Beyond Conventional SCA - Turning Pain Points into Security Gains

Watch our SafeDevTalk October edition to discover how to transform Software Composition Analysis (SCA) and secure your software supply chain against emerging threats.
This session is designed for cybersecurity leaders and development teams looking to stay ahead in today’s complex landscape of open-source vulnerabilities.

Do you need aspm in your life SafeDev Talks

Do you need ASPM in your life? Strengthen your Cybersecurity Practices!

Application Security Posture Management (ASPM) is gaining traction day by day. However, its specific functionalities might not be entirely clear for everybodySecure your spot now! Join our SafeDev Talk “Do you need ASPM in your life?” with cybersecurity experts James Berthoty, William Palm and Luis Garcia to explore the potential of ASPM as a holistic application security solution and keep empowering your organization!

DORA Compliance SafeDev Talks

DORA - Understanding What’s at Stake from a Cybersecurity point of view

Watch our Opening Season's SafeDev Talk episode on DORA now to master it and stay ahead in the ever-evolving landscape of financial regulation. This webinar is crafted specifically for financial institutions and will help you navigate DORA’s impact on operational security and compliance. You will gain actionable strategies and expert insights, leaving you better prepared for the future!

Malware attacks evolution SafeDev Talks

Malware attacks evolution - Why is important to detect them and how to do it

The fourth edition of SafeDevTalks features leading cybersecurity experts Derek Fisher, Abhilasha Sinha, and Luis Rodriguez. This episode will delve into the critical topic of reliance on third-party and open-source components in software development, revealing the hidden vulnerabilities and emerging threats. Join us to learn more about hidden vulnerabilities, expanding threats, real world breaches and much more!

Demystifying sbom security

Demystifying SBOM Security - Conquering Software Supply Chain Complexity

Join us for "Demystifying SBOM Security," where cybersecurity experts Jennifer Cox, Santosh Kamane and Jesus Cuadrado will reveal the importance of SBOM in enhancing software quality, and security, and ensuring compliance. This webinar is essential for gaining knowledge on how to secure your software supply chain effectively. Learn how easily you can empower Your Software Security Posture!

webinar cicd episode 1 web

Episode 1: CI/CD Security webinars series From new attack tactics to protection strategies

In this rapidly evolving digital landscape, the security of your software supply chain is more critical than ever. As new attack tactics emerge, it’s crucial to stay ahead of the curve and arm yourself with the latest protection strategies In this webinar, Luis Rodriguez will guide you ...

webinar-live-cicd-episode-2

Episode 2: Best practices for CI/CD protection from OWASP perspective


Join this second episode of the CI/CD webinars featuring Luis Rodríguez, CTO, and co-founder of Xygeni, and Luis Manuel García, Sales Support Manager. In this session, we will explore the “blue team” perspective of CI/CD security, diving deep into actionable steps organizations can take to enhance their security posture ...

RSA_WEBINAR_Resources

You were not able to make it to the RSA Conference 2024 in San Francisco? No problem! Watch our exclusive webinar and get ahead of some of the most critical trends in cybersecurity, from changes in CISO roles to leading cyber-defense state-of-the-art developments—all at your desk. In this webinar, you will deep dive into the most updated insights and strategies that the cybersecurity world has to offer!

what about software supply chain security

Exploring the Horizon: Dive into the essential insights and predictions for SSCS in 2024.

Thoughtworks, Codurance, and Xygeni experts will share their insights on Software Supply Chain Security. Elevate your security posture and safeguard your business’s reputation and continuity. Are you ready to learn about the evolution of Software Supply Chain Security?

Neuco-podcast

[External Resource] Neuco's The Cyber Security Matters Podcast on Software Supply Chain Security With Luis Rodríguez

Listen to Neuco's The Cyber Security Matters Podcast episode on "The new challenge in software security: how to keep devops running while not falling under supply chain attacks" with Luis Rodriguez, CTO at Xygeni, and explore the changing challenges of securing the software supply chain.

Keys-to-a-Secure-CICD-Resources

Keys to a Secure CI/CD: a Webinar with an OWASP Focus

Join Luis Rodríguez, CTO of Xygeni, and Luis Manuel García, Sales Support Manager, in this Webinar about Secure CI/CD. Learn from our experts how to adopt OWASP best practices to strengthen the security of your CI/CD and protect your software supply chain. Protect your CI/CD and software supply chain with OWASP. They will talk about Inventory and Analysis, CI/CD Risks, Detection and Prevention among many other things!

webinar-comercial-malware-detection

Real-Time Malware Detection in Open Source Components - NIS2 & DORA Implications

Join our webinar "Real-Time Malware Detection in Open Source" to explore the latest malware threats impacting Open-Source Software (OSS). As the adoption of OSS grows, so do the volume and complexity of threats, presenting new challenges for developers and organizations alike. This insightful session will uncover the latest trends, emerging threats, and advanced strategies to safeguard your OSS dependencies from malicious attacks. Join us!

collab-xygeni-cyberconnect

[External Resource] A working guide to Software Supply Chain Security w/ Luis Rodriguez for SECURE | CYBERCONNECT

Take a look at the Secure Cyber Connect Podcast episode featuring our CTO Luis Rodriguez. With 15+ years of experience, Luis shares expert insights on detecting malicious code, securing third-party components, and future-proofing AppSec strategies. From the SolarWinds aftermath to the latest SSH backdoor incident, this episode covers real-world threats and practical defense tactics. Learn how to strengthen your SDLC, reduce supply chain risk, and stay ahead of evolving cyber threats.

Start Your Free 7-day Trial

Start exploring Xygeni’s AppSec platform your way — no credit card needed.

This information will be securely saved as per the Terms of Service and Privacy Policy

Take a guided tour and see how Xygeni identifies and fixes software vulnerabilities.

Scan Your Own Repos

Your source code is never uploaded.
your privacy stays in your hands

Get started with one click
No credit card required.

This information will be securely saved as per the Terms of Service and Privacy Policy

OSZAR »