septiembre 19

Cómo restringir el registro de usuarios en phpBB a un dominio de correo específico


Si gestionas un foro phpBB y quieres que solo usuarios con correos de un dominio específico puedan registrarse, este tutorial te enseñará cómo crear una extensión personalizada que lo haga sin tocar el núcleo de phpBB. Ideal para foros corporativos o comunidades privadas.


Paso 1: Crear la estructura de la extensión

Dentro de la carpeta ext/ de tu instalación de phpBB, crea la siguiente estructura:

ext/tu_nombre/allow_email_domain/
├── composer.json
├── ext.php
├── event/
│   └── listener.php
└── language/
    └── es/
        └── info_acp.php
  • tu_nombre: reemplázalo por tu alias o el nombre de tu proyecto.
  • allow_email_domain: nombre de la extensión.

💡 Tip: Mantén los nombres en minúsculas y sin espacios para evitar problemas al activar la extensión.


Paso 2: Crear los archivos de la extensión

1️⃣ composer.json

Define los metadatos de la extensión:

{
    "name": "tu_nombre/allow_email_domain",
    "type": "phpbb-extension",
    "description": "Permite el registro solo con un dominio de correo específico.",
    "version": "1.0.0",
    "author": "Tu Nombre",
    "license": "GPL-2.0-or-later",
    "require": {
        "phpbb/phpbb": ">=3.3.0"
    }
}

2️⃣ ext.php

Archivo mínimo para registrar la extensión:

<?php

namespace tu_nombre\allow_email_domain;

class ext extends \phpbb\extension\base
{
}

3️⃣ event/listener.php

Aquí se valida que el correo pertenezca al dominio permitido:

<?php

namespace tu_nombre\allow_email_domain\event;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class listener implements EventSubscriberInterface
{
    protected $user;

    public function __construct(\phpbb\user $user)
    {
        $this->user = $user;
    }

    public static function getSubscribedEvents()
    {
        return [
            'core.ucp_register_validate_data' => 'check_email_domain'
        ];
    }

    public function check_email_domain($event)
    {
        $data = $event['data'];

        // Cambia este valor por tu dominio autorizado
        $allowed_domain = 'dominioautorizado.es';

        if (!preg_match('/@' . preg_quote($allowed_domain, '/') . '$/i', $data['email']))
        {
            $event['error'][] = 'SOLO_DOMINIO_AUTORIZADO';
        }
    }
}

💡 Tip: Cambia 'dominioautorizado.es' por tu dominio real.


4️⃣ language/es/info_acp.php

Mensaje de error para mostrar al usuario:

<?php

$lang = array_merge($lang, array(
    'SOLO_DOMINIO_AUTORIZADO' => 'Solo se permiten registros con correos del dominio autorizado (@dominioautorizado.es).',
));

Paso 3: Instalar y activar la extensión

  1. Sube la carpeta allow_email_domain a ext/tu_nombre/.
  2. Entra al ACP → Extensiones → Gestionar extensiones.
  3. Activa la extensión Allow Email Domain.

✅ Ahora, cualquier intento de registro con un correo que no termine en @dominioautorizado.es será bloqueado automáticamente con un mensaje de error.


Paso 4 (Opcional): Hacer el dominio configurable desde el ACP

Si quieres mayor flexibilidad, puedes modificar la extensión para que el dominio permitido se configure directamente desde el Panel de Administración, sin necesidad de tocar el código cada vez que quieras cambiarlo.

💡 Esto es ideal para foros con varios dominios autorizados o cuando el dominio puede cambiar en el futuro.


Conclusión

Con esta extensión podrás controlar quién puede registrarse en tu foro phpBB sin tocar el núcleo del sistema, manteniendo tu foro seguro y actualizado.

Ventajas de esta solución:

  • No modifica archivos centrales de phpBB.
  • Fácil de instalar y activar.
  • Bloquea automáticamente registros de correos no autorizados.


Etiquetas: ,
Copyright 2020. www.garcalia.com

Publicado 19 de septiembre de 2025 por Titogus in category "phpbb", "Proxmox