:::: MENU ::::

Comprobar si existe login en el backend en páginas del frontend (Magento)

Comprobar si existe login en el backend en páginas del frontend (Magento)
0 votos, 0.00 media (0% puntos)

A veces es necesario dejar algunas funciones de la tienda online ocultas, para que solo las puedan utilizar un conjunto de personas autorizadas.

En nuestro caso ha habido recientemente una situación de este tipo, en la que necesitábamos realizar una integración de nuestro Magento con un sistema externo de recomendación de productos (productos relacionados).

No podíamos realizar las pruebas en nuestro entorno de desarrollo porque necesitábamos generar tráfico suficiente, y también porque la herramienta en cuestión no nos permitía cambiar fácilmente del dominio de test al dominio de producción.

Se que no es la mejor forma de plantear este tipo de situaciones, y os recomiendo que busquéis otras soluciones antes de aplicar esta, pero llegado un caso extremo, una de las opciones es comprobar si hay un usuario logeado en el administrador desde las páginas del frontend.

De esa forma, simplemente con hacer login en el administrador de Magento, podemos ver una determinada función o bloque en el frontend y hacer nuestras pruebas privadas fácilmente y sin molestar al resto de usuario. Lógicamente, debemos acceder al frontend y al backend desde el mismo navegador.

Para ello podéis utilizar la siguiente función:

    function hasAdminSession($session_data) {
        
        // Buscamos la cookie del admin
        if (array_key_exists('adminhtml', $_COOKIE)) {
          
            // Suponemos que la sesión está en archivos, si no, habría que modificar esto
            $sessionFilePath = Mage::getBaseDir('session') . DS . 'sess_' . $_COOKIE['adminhtml'];
            $sessionFile = file_get_contents($sessionFilePath);
            
            // Obtenemos el archivo conservando la sesión
            $oldSession = $_SESSION; 
            session_decode($sessionFile); 
            $adminSessionData = $_SESSION; 
            $_SESSION = $oldSession;
        }
        
        // Comprobamos si hay usuario
        if (array_key_exists('user', $adminSessionData['admin'])) {
            $adminUserObj = $adminSessionData['admin']['user']; 
            if (is_object($adminUserObj)) {
                return true;
            } 
        }
        
        return false;      
    }



Hey! Qué opinas sobre el artículo?